如何使用Python中的decorator向类添加方法?我的目标是让使用我的decorator的类有一个可用的方法。在
下面是一个简化的例子。我希望instance.dec_added_func()
返回{
>>> def myFunction():
... return 'X'
...
>>> myFunction()
'X'
>>> def myDecorator(cls):
... cls.dec_added_func = myFunction
...
>>> @myDecorator
... class MyClass(object):
... a = 'A'
...
>>> instance = MyClass()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
我知道这可以通过一个基类的子类化来实现,但是我希望能够用一个修饰符来实现。在
你需要做两件事:
让
myDecorator
返回传递给它的类对象:否则,在默认情况下,decorator将返回
None
,并且当您尝试调用MyClass()
时,您将得到一个TypeError
。使
^{pr2}$myFunction
接受self
参数:无论何时在类的实例上调用它,它都将被隐式传递。
下面是一个演示:
对于简短的方法,如果您认为lambda更具可读性,也可以考虑使用lambda:
将
^{pr2}$==
运算符添加到具有value
字段的类的另一个示例:相关问题 更多 >
编程相关推荐