みちのぶのねぐら

Logo 工作室 // 厚生部 // 政治局

Python で定数のようなものを使う

Update: 2010-12-25

プログラム言語 Python には、定数がありません。でも、定数みたいなものが使いたいなと思って探していたらありました。

http://code.activestate.com/recipes/65207/

class _const:
    class ConstError(TypeError): pass
    def __setattr__(self,name,value):
        if self.__dict__.has_key(name):
            raise self.ConstError, "Can't rebind const(%s)"%name
        self.__dict__[name]=value
import sys
sys.modules[__name__]=_const()`

一度メンバーに値を設定すると、それ以降、値を変えることができないクラスです。こんな感じで使うのですが、

import const
const.test = "Test1"
const.test = "Test2"

この例の場合、最後の行で例外が発生します。エラーの検知は実行時で、コンパイルの時点の違反の検出はできませんが、それでも十分使う価値があるものだと思います。