gpt4 book ai didi

python - 覆盖类的方法定义

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:38 24 4
gpt4 key购买 nike

假设我有一个类 FooClass,它定义了一个方法 foo_method。这个类在第三方库中,我想明确地覆盖它。我有许多继承自 FooClass 的类,所以我不想为每个子类重写 foo_method。相反,我想在不深入研究第三方库代码的情况下覆盖类的方法定义。当我尝试显而易见的方法时,

from thirdparty import FooClass

class FooClass(object):

def foo_method():
newstuff

我得到了奇怪的行为——NotImplementedErrors 等等。我错过了什么吗?

最佳答案

您正在本地重新定义类;这不会改变原始类或影响在其他地方使用它的任何人。

可以猴子修补类上的方法:

from thirdparty import FooClass

orig_foo_method = FooClass.foo_method

def new_foo_method(self):
# do new stuff
# perhaps even call orig_foo_method(self)

FooClass.foo_method = new_foo_method

现在,任何试图在 Python 解释器中的任何位置对 FooClass 实例调用 .foo_method() 的代码都会找到并调用您的 new_foo_method() 方法代替。

关于python - 覆盖类的方法定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20480629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com