【发布时间】:2022-01-12 21:16:14
【问题描述】:
假设我有一个类Foobar,我想重新定义它的一个实例的方法:
class Foobar:
def myMethod(self):
print('this method was not overridden')
foo = Foobar()
def foo.myMethod:
print('this method was overridden')
问题是,这种方法会引发错误。有没有办法重新定义对象方法?
【问题讨论】:
-
框架挑战:你为什么要这么做?类的目的是为它的所有实例定义行为。如果
foo应该表现不同,那么foo可能不应该是Foobar的实例。 (让myMethod检查实例的属性以便以某种方式行事是另一回事。)
标签: python object monkeypatching redefinition