我有一个我无法更改的类(它来自一个库),它可能看起来像
class Test(object):
def __init__(self):
pass
def bar(self, x):
return x
我想在Test
中的bar
方法中添加一个decorator,例如如下所示:
from functools import wraps
def some_decorator(fn):
@wraps(fn)
def wrapped(*args, **kwargs):
return "<b>" + fn(*args, **kwargs) + "</b>"
return wrapped
通过“添加”decorator,我的意思是有一种方法来生成具有bar
方法包装在some_decorator
中的对象
但是,我无法更改Test
中的代码,这使我的问题更加困难。有没有一种简单的方法可以从python中无法更改的类中向方法中添加装饰器
您可能知道,decorator只是一个函数,它接受一个函数作为参数并返回一个新函数,因此您可以执行以下令人讨厌的恶意修补程序:
如果您不想修改原始的类定义,那么您可以通过简单的继承本身而不是使用装饰器来实现这一点
现在,在执行时说:
输出将是
您可以在super()调用之前和之后放置您想要的任何包装器代码
相关问题 更多 >
编程相关推荐