例如:
class a:
@staticmethod
def aaa():
print 'a'
a.aaa()
a.aaa = lambda: raise ValueError('a')
a.aaa()
第二次python引发了一个错误,我没有将类a的实例传递给方法。 如何在不删除静态属性的情况下更改实现?
答案 0 :(得分:0)
直接调用staticmethod
装饰器:
class a:
@staticmethod
def aaa():
print 'a'
a.aaa()
# decorate the lambda expression with staticmethod
a.aaa = staticmethod(lambda: 'a')
a.aaa()
这基本上就是你在使用装饰器时所做的事情。
请注意,您无法raise
错误直接,因为raise
是语句,而不是表达式。但是你可以use some tricks to raise an exception in a lambda expression。