gpt4 book ai didi

python - 猴子补丁向现有模块添加新类和函数

转载 作者:行者123 更新时间:2023-12-04 17:16:24 25 4
gpt4 key购买 nike

如果我有一个看起来像这样的现有模块 track.py:

class A:
variable_b = "some text"

如何修补 track.py 以添加新类和新函数,例如:

class A:
variable_b = "some text"

class B:
variable_c = "more text"

def some_func():
pass

最佳答案

我想你是说 track.py 是不可访问的(可能来自你不想接触的库)。

有几种方法可以做到这一点。一种是只导入模块,然后在运行时更改对象以包含该类。

import track
track.B = B # or setattr(track, 'B', B)
track.some_func = some_func # or settattr(track, 'some_func', some_func)

您也可以合并到 __init__.py 中,例如

import track
import track_monkey_patch
track.__dict__.update(track_monkey_patch.__dict__)

此外,沿着制作装饰器或某种包装来为您做这件事,如果您可以添加外部依赖项,那么看起来有人已经这样做了(我自己从未使用过,只需快速谷歌一下). https://github.com/christophercrouzet/gorilla

任何人都可以使用的测试代码

import collections  # could have been anything just came to my head quickly
def foo():
print("foooooo")
collections.foo = foo
collections.foo()
>>> foooooo

关于python - 猴子补丁向现有模块添加新类和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68637641/

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