日々精進

新しく学んだことを書き留めていきます

pythonでstaticコンストラクタを使いたい

static変数を初期化する処理をstaticコンストラクタに書きたいという場合。 pythonにはstaticコンストラクタは無いけど、.pyファイルは普通にpythonスクリプトとして実行されるので 以下のようにクラス定義の後に初期化処理を実装すればよい。

class A(object):
    _some_private_static_member = None

    @classmethod
    def reset_static_data_members(cls, some_value):
        cls._some_private_static_member = some_value

A.reset_static_data_members("some static value")

こういうpythonのオブジェクト指向を後付けした感いやだなぁ。メソッドの第一引数のselfとか。

参考:

stackoverflow.com