我有一个定义了多个方法的类。
import mat
class Klass(object):
@mat.sell(mat.CanSet):
def method1(self):
return None
@mat.sell(mat.CanSet):
def method2(self):
return 'value2'
想象一下,我需要为此“Klass”填充 10 种方法。我想生成这些方法而不明确地全部写出来。所以我想做一个为每种方法做 setattr 的工厂。问题是我执行以下操作,最后一个方法具有最后一个值。每个都没有得到它的相关值,而是 value10。同样下面的解决方案没有实现装饰器,我不知道如何分配装饰器
class Klass(object):
pass
list1 = [('method1', 'value1'), ('method2', 'value2').....('method10', 'value10')]
for each in list1:
method_name, method_value = each
setattr(Klass, method_name, lambda self: method_value)
所以当我跟随....
k = Klass()
print k.method1(), method2()...., method10()
对于每种方法,这一切都会导致 value10。不明白为什么 ?另外,任何人都可以帮助如何实现具有一个属性的装饰器吗?PS:如果您有不使用“setattr”的建议,也将受到欢迎。