我想修补一些使用来自外部模块的对象的代码。
该对象的一种方法在各处都被调用,我需要在所有这些调用中设置一个新的默认kwarg。
与其添加太多重复的代码,不如更改对象方法会更好。什么是最干净的方法?
这称为猴子修补,并且没有“干净”的版本。
如果需要替换bar类中的方法Foo,请使用以下代码:
oldMethod = Foo.bar
def newMethod(self, **kwargs):
... fix kwargs as necessary ...
oldMethod(self, **kwargs)
Foo.bar = newMethod
Run Code Online (Sandbox Code Playgroud)
self,就像该函数位于类内部一样。oldMethod(self, ...). 这将获取方法指针,并使用实例作为第一个参数来调用它。self.oldMethod()不起作用,因为我们不在class上下文中(我认为)。有关的:
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |