gpt4 book ai didi

python - 我可以在调用函数之前对函数参数/变量进行猴子修补吗?

转载 作者:太空宇宙 更新时间:2023-11-03 21:31:43 24 4
gpt4 key购买 nike

我有一个第三方包可以执行以下操作:

def build(debug=False):
args = []
if not (debug):
args.append('--windowed')
args.extend(['--icon', path('src/main/icons/Icon.ico')])
# and much, much more

我希望将这个函数修补成:

def build(debug=False, args=[]):
# remove the line: args = []
# and retain the rest of the function

我知道我可以执行以下操作:

def monkeypatched_build(debug=False, args=[]):
# remove the line: args = []
# and include all of the other code here

build = monkeypatched_build

但是,我的例子中的 build 函数很复杂,如果可能的话,我想避免维护该函数的单独版本,而只需更改修改 的方式args 变量。

我不确定这是否可能,因为我需要在调用函数之前修改它。有什么想法吗?

最佳答案

对于不涉及此黑客的潜在解决方案,您是否可以修改构建函数?如果是这样,您只需向其添加一个默认值为 true 的标志参数即可。

def build(debug=False, overwrite_flag = True, args = []):
if overwrite_flag:
args = []
#rest of the function
然而,您所要求的本质上是抑制函数中编写的指令之一,而不仅仅是添加新参数。新参数可以用装饰器来管理,但我不知道覆盖函数的指令。

关于python - 我可以在调用函数之前对函数参数/变量进行猴子修补吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53477701/

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