2017-07-10 7 views
1
class TestClass(object): 
    aa = lambda x: 35 
    def __init__(self): 
     self.k = self.aa() 


o = TestClass() 
print o.k 

これは私に35の理由がわかります。@classmethodラムダをPythonで定義する

しかし、これは:

class TestClass(object): 
    @classmethod 
    aa = lambda x: 35 
    print type(aa) 
    def __init__(self): 
     self.k = TestClass.aa() 


o = TestClass() 
print o.k 

これは私になぜ

File "test1.py", line 3 
    aa = lambda x: 35 
    ^
SyntaxError: invalid syntax 

を与えますか?

答えて

6

デコレータは、defclassの文でのみ構文的に有効です。あなたはラムダにデコレータを使用することはできません

class TestClass(object): 
    aa = classmethod(lambda x: 35) 
    # etc. 
1

:あなたと同じ結果を得ることができますので、しかし、デコレータ構文は、その引数として飾ら機能(またはクラス)とのデコレータを呼び出すためだけの省略形です。あなたはそれを

aa = classmethod(lambda x:35) 
と置き換えることができます
関連する問題