【发布时间】:2015-07-17 03:02:53
【问题描述】:
我想以我想要的方式运行第三方python程序thirdparty.py。我不能直接更改thirdparty.py的代码,所以我更改了thirdparty.py使用的外部模块。 thirdparty.py的代码是这样的:
import module_a
def somefunc():
...
module_a.add(value)
所以我创建了自己的module_a.py 并重写了它的add(value) 函数:
# module_a.py created by me
def add(value):
# code written by me
do_something()
现在我的问题是,每次module_a.add(value) 被thirdparty.py 调用时,我怎么记得value?
我当前的解决方法是将value 写回do_something() 中的外部文件。但是,我不希望涉及任何外部文件和 I/O。另外,我既不能使用module_a.py 中的类来维护状态,也不能更改add(value) 的签名,否则thirdparty.py 中的module_a.add(value) 将不起作用。
理想情况下,我想编写另一个类来与module_a.py 交互,并记住每次传递给add(value) 的值,但该怎么做呢?
【问题讨论】:
-
记住值是什么意思?你想对记住的值做什么?
-
我想你可能在这里有XY Problem。为什么不能将thirdparty.py 包装在您编写的模块中?是否要跟踪 module_a 调用?
-
当
module_a.add()被调用时,它会被调用一个新的值——为什么你需要记住旧的值?你想要哪个旧值?
标签: python function module state