gpt4 book ai didi

python - 修补 python 对象以将默认值添加到方法 kwargs

转载 作者:行者123 更新时间:2023-12-04 20:40:19 26 4
gpt4 key购买 nike

我想修补一些使用来自外部模块的对象的代码。

这个对象的一个​​方法被到处调用,我需要在所有这些调用中设置一个新的默认 kwarg。

与其添加这么多重复的代码,我认为更改对象方​​法会更好。最干净的方法是什么?

最佳答案

这称为 monkey-patching并且没有“干净”的版本。

如果需要更换方法bar在一个类(class)Foo ,使用此代码:

oldMethod = Foo.bar
def newMethod(self, **kwargs):
... fix kwargs as necessary ...
oldMethod(self, **kwargs)
Foo.bar = newMethod
  • 首先,我们将旧方法句柄保存在变量
  • 中。
  • 然后我们将新方法定义为一个函数。第一个参数必须是 self ,就好像这个函数在一个类中一样。
  • 要调用原始方法,我们使用 oldMethod(self, ...) .这将获取方法指针,并以实例作为第一个参数调用它。 self.oldMethod()不起作用,因为我们不在 class 中上下文(我认为)。
  • 最后,我们在类中安装已修补的方法。

  • 有关的:
  • http://mflerackers.wordpress.com/2012/02/01/modifying-python-classes-at-run-time/
  • 关于python - 修补 python 对象以将默认值添加到方法 kwargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27784095/

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