Python: 重写未知类

2024-04-24 23:59:49 发布

您现在位置:Python中文网/ 问答频道 /正文

考虑这个例子:

x = a.some_class_instance
x.foo()

我想装饰x.foo()

一些类似于

^{pr2}$

有什么办法吗? 谢谢:)


Tags: instancefoo装饰someclass例子办法pr2
2条回答

以下代码

@decorator
def decoratee():
    pass

只是简写

^{pr2}$

decorator只接受一个函数作为参数并返回一个新函数。在

您的示例代码编译,并且根据x.foo所做的,实际上可以不出错地运行。但我很怀疑它能做你想做的事。我想你想要的是这样的:

def decorate(f):
    def decorated():
        print 'decorator'  
        f()
    return decorated
x.foo = decorate(x.foo)

最简单的方法是:

x.foo = dec(x.foo)

另一种方法是扩展实例的类

^{pr2}$

但我看不出有什么好理由这么做。在

相关问题 更多 >