2012-01-14 22 views
1

私は動的に静的メソッドをPythonクラスに追加する方法を探していました。メソッドを静的変数に格納する方法は?

私の試みは、以下の通りであった:

class C(object): 
    a = None 

k = 2 
C.a = lambda x: k*x 
print C.a(2) 

は残念ながら、私はCインスタンスがaの最初の引数として必要とされるというエラーを取得します。効果的には、PythonはaがクラスCのインスタンスメソッドであり、クラスメソッドではないと考えています。

この理由は何ですか?どうすれば問題を克服できますか?

答えて

5

使用staticmethod

>>> C.a = staticmethod(lambda x: k*x) 
>>> print C.a(2) 
4 
関連する問題