python - 如何在不完全用 Python 重写的情况下在函数内部添加、删除和编辑某些行?

我想在已安装的 pypi 包提供的长函数(~200 行)中间进行微小的更改(~10 行,包括编辑和删除现有行,以及添加新行)。

例如:

def func(*args, **kwargs)
    ... # other lines remain unchanged
    some lines which I want to edit
    ... # other lines remain unchanged

据我所知,装饰器只在函数的开头/结尾添加代码,继承是一个基本的解决方案,但它可能需要大量不必要的复制,因为我只想更改相对少量的代码。我也不能直接编辑这个包,因为这个包对我来说是只读的,恕我直言,这是一个不优雅的解决方案。

那么有没有什么简单优雅的方案(即实现代码量小,可读性好)来达到这个目的呢?

最佳答案

简而言之,没有。对此没有“漂亮”的解决方案。选项是:

  • 将整个函数复制粘贴到一个自己的文件中。导入“更正”后,猴子将其修补到源模块上。
  • 导入函数并以某种方式修补字节码(但这可能只适用于一个 python 版本)
  • 如果它是一个开源模块,将其 fork 并进行自定义构建(这可以说是最干净的解决方案)。
  • (编辑):...或向原始项目发送拉取请求;-)

无论如何,都要做好记录。

https://stackoverflow.com/questions/71553894/

相关文章:

swift - 如何快速制作圆形或填充和圆形进度 View (使用 CAShapeLayers)

c++ - const char * 数组中的元素数

linux - 使用打印命令选择子域

python - 两个日期时间之间的 15 分钟间隔数

c++ - 键入 “$” 命令不会跳转到行尾 [光标设置为 “|”(条形/管道)而不是 block

python - 极地 : switching between dtypes within a Da

python - 我们如何提取数据框中具有顺序值的行?

python - 理解 python 的 len() 时间复杂度

r - 根据 R 中的出生年份对人员进行分组

r - 与另一列中的变量相比,如何找到 R 列中两两变量之间的共同变量数?