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

希尔科特

这是一个傻瓜,但请忍受我。

我正在调用一个库,该库的功能可以无限期地等待某种输入。不幸的是,此函数的错误方式是它允许从其读取的管道中填充不相关的输入,从而导致程序在等待其自身视而不见的输入时锁定。该库非常关键,很难复制,并且维护者不接受请求请求或错误报告。

我需要向该函数的主体中注入一个“冲洗管道”函数调用。以前,我已经利用具有回调参数的类似函数解决了此问题,但是此特定函数没有此类参数。

我能做些什么?

拉尼兹

似乎您可以查看源代码,因此您可以做的是遍历源代码并找到在bugged方法内部调用的方法,然后对其进行猴子修补

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
窃听方法坠毁:INT()参数必须是一个字符串,一个字节状物体或数字,而不是“NoneType”
5
10
0
25

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在运行时修改功能代码

来自分类Dev

在运行时修改表名

来自分类Dev

在运行时修改GraphQLObjectType字段

来自分类Dev

在运行时快速创建函数

来自分类Dev

递归函数在运行时崩溃

来自分类Dev

Javascript:在运行时创建函数

来自分类Dev

在运行时修改模板化函数的名称-可能吗?

来自分类Dev

从方法修改器在运行时应用角色

来自分类Dev

PHP在运行时修改suhosin设置

来自分类Dev

如何在运行时动态修改proc主体?

来自分类Dev

在运行时修改hibernate.cfg.xml

来自分类Dev

在运行时添加,修改,删除celery.schedules

来自分类Dev

在运行时修改方法注释参数

来自分类Dev

在运行时修改hibernate.cfg.xml

来自分类Dev

在运行时修改表达式

来自分类Dev

在运行时添加,修改,删除celery.schedules

来自分类Dev

如何在运行时修改根XML标记?

来自分类Dev

如何在运行时修改配置文件

来自分类Dev

哪个事件在运行时修改GridView数据

来自分类Dev

在运行时修改数组大小

来自分类Dev

在运行时修改appSettings的“文件”属性

来自分类Dev

在运行时修改列表的 start_index python

来自分类Dev

循环函数的运行时间

来自分类Dev

在运行时调整UITableViewCell内部的UIView的宽度

来自分类Dev

在运行时从MDB内部访问ejb-name

来自分类Dev

在运行时调整UITableViewCell内部的UIView的宽度

来自分类Dev

嵌套函数仍在运行时暂停外部函数

来自分类Dev

Unity在运行时冻结,循环实例化

来自分类Dev

可以在运行时使用Javascript创建函数吗?