gpt4 book ai didi

python - 在运行时修改循环函数的内部

转载 作者:太空狗 更新时间:2023-10-30 01:21:36 26 4
gpt4 key购买 nike

这个有点傻,但请耐心等待。

我正在调用一个库,该库具有无限期等待某种输入的功能。不幸的是,这个函数被窃听的方式允许它从中读取的管道填充不相关的输入,导致程序在等待输入时锁定,而它自己却对它视而不见。该库非常关键,极难复制,维护者不接受拉取请求或错误报告。

我需要将“冲洗管道”函数调用注入(inject)到该函数的主体中。以前我已经通过利用具有回调参数的类似函数解决了这个问题,但是这个特定的函数没有这样的参数。

我能做什么?

最佳答案

您似乎可以查看源代码,所以您可以做的是浏览源代码并找到在错误方法和 monkey patch 中调用的方法。它:

class OtherGuysClass:

def buggedMethod(self, items):
for item in items:
a = self.convert(item)
print(a * 5)

def convert(self, str):
return int(str)

if __name__ == "__main__":
try:
OtherGuysClass().buggedMethod([1, 2, None, 5])
except Exception as e:
print("Bugged method crashed: " + str(e))

# Replace convert with our own method that returns 0 for None and ""
o = OtherGuysClass()
original_convert = o.convert
def float_convert(str):
if str:
return original_convert(str)
return 0
o.convert = float_convert
o.buggedMethod(["1", "2", None, "5"])

5
10
Bugged method crashed: int() argument must be a string, a bytes-like object or a number, not 'NoneType'
5
10
0
25

关于python - 在运行时修改循环函数的内部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30251518/

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