【发布时间】:2013-11-29 22:10:06
【问题描述】:
我想将装饰器应用于类中的每个方法。我没有类的源代码,所以不能直接应用装饰器。我想调用一些接受类并添加装饰器的函数。
但问题是testclass.__dict__ 是一个mappingproxy 对象,它至少不直接支持任何赋值或修改。那么问题是如何避免这种限制并应用装饰器?
这是失败尝试的代码:
class qwer:
def test(self):
print('test')
def decor(func):
def w(*args, **named_args):
print('decor')
func(*args, **named_args)
return w
qwer.__dict__['test'] = decor(qwer.__dict__['test'])
错误:
TypeError: 'mappingproxy' object does not support item assignment
【问题讨论】:
标签: python python-3.x decorator