gpt4 book ai didi

python - 让__import__获取动态添加的方法

转载 作者:行者123 更新时间:2023-11-30 23:57:38 24 4
gpt4 key购买 nike

在我的工作场所,有一个脚本(一种自动化系统),可以从 XML 文件加载并运行我们的应用程序测试。

在该过程的中间,脚本调用 __import__(testModule) 从其文件中加载模块。

当我尝试通过在运行时向 testModule 动态添加函数来添加功能时,问题就开始了。

正如预期的那样,__import__ 获取旧版本的模块,该模块没有我刚刚在运行时添加的方法。

是否可以使 __import__ 调用导入该类的较新版本(其中包括我添加的方法)?

请注意,我更喜欢保持自动化系统不变(即使它有助于更​​快地解决问题)。

谢谢

塔尔。

最佳答案

您需要注意,重新加载模块不会神奇地替换旧实例。即使您重新加载,也只有对象才会使用代码!

在运行时替换代码的唯一方法是将所有内容包装在代理对象中!有时您可以这样做,即对于特定的、独立的模块,但在大多数情况下,这根本不是一个合理的方法。

快速演示:

>>> import asd
>>> asd.s
'old'
>>> t = asd.s
>>> reload(asd) # I edited asd.py before
<module 'asd' from 'asd.py'>
>>> asd.s # new module content
'new'
>>> t # but this is still old!
'old'

大多数看起来像是重新加载代码的应用程序实际上只是重新启动!

关于python - 让__import__获取动态添加的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3604611/

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