Skip to main content
 首页 » 编程设计

python之在 python 中定义 @classmethod lambda

2025年05月04日13del

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

这给了我 35,我明白为什么。

但是这个:

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 

为什么会这样?

请您参考如下方法:

装饰器仅在语法上对 def 和 class 语句有效。但是装饰器语法只是以装饰函数(或类)作为参数调用装饰器的简写,因此您可以通过以下方式获得相同的结果:

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