You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Python包B修改包A中process函数的逻辑?

完全可以实现

这在Python里叫做猴子补丁(Monkey Patching),就是在运行时动态修改函数或类的行为,刚好能满足你要的需求。

具体实现示例

假设包A的代码文件a.py内容如下:

def process(input: str):
    return input.upper()

包B的代码文件b.py可以这么写:

import a

# 定义包含额外逻辑的补丁函数
def _patched_process(input: str):
    print("Modified logic")
    # 调用原函数逻辑,用__original__保存原引用
    return a.process.__original__(input)

def patchPackageA():
    # 先保存原函数引用,避免覆盖后无法调用
    a.process.__original__ = a.process
    # 替换原函数为补丁函数
    a.process = _patched_process

测试效果

运行以下代码:

import a
import b

# 补丁前调用
print(a.process("hello world!"))  # 输出:HELLO WORLD!

# 应用补丁
b.patchPackageA()

# 补丁后调用
result = a.process("hello world!")
# 控制台先打印:Modified logic
# 然后输出:HELLO WORLD!
print(result)

注意事项

  • 猴子补丁只在当前Python进程内生效,不会修改包A的源文件,进程结束后失效
  • 必须保存原函数引用(比如示例里的__original__),否则补丁函数无法复用原逻辑
  • 如果其他模块已提前导入并缓存了a.process的引用,需要确保补丁在这些模块导入前执行,或者同步修改对应模块里的引用

内容的提问来源于stack exchange,提问作者Baiqing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:47:09