class TestClass(object):
aa = lambda x: 35
def __init__(self):
self.k = self.aa()
o = TestClass()
print o.k
Run Code Online (Sandbox Code Playgroud)
这给了我35,我理解为什么.
但是这个:
class TestClass(object):
@classmethod
aa = lambda x: 35
print type(aa)
def __init__(self):
self.k = TestClass.aa()
o = TestClass()
print o.k
Run Code Online (Sandbox Code Playgroud)
这给了我
File "test1.py", line 3
aa = lambda x: 35
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
为什么这样 ?
装饰只在语法上是有效的def和class陈述.但是装饰器语法只是用装饰函数(或类)作为参数调用装饰器的简写,所以你可以用以下方法实现相同的结果:
class TestClass(object):
aa = classmethod(lambda x: 35)
# etc.
Run Code Online (Sandbox Code Playgroud)