【发布时间】:2015-01-11 16:42:37
【问题描述】:
如何在 Python 中使用装饰器向类添加方法?我的目标是让使用我的装饰器的类有一个可用的方法。
这是一个简化的例子。我要instance.dec_added_func() 回复'X':
>>> 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
我知道这可以通过继承基类来实现,但我希望能够使用装饰器来实现。
【问题讨论】:
-
装饰器函数需要返回它所传递的类。