Python:记住模块函数调用值
Python: remember module function call values
我想 运行 第三方 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()
现在我的问题是,每次 thirdparty.py
调用 module_a.add(value)
时,我如何记住 value
?
我目前的解决方法是将 value
写回 do_something()
中的外部文件。但是,我不想涉及任何外部文件和 I/O。另外,我既不能使用module_a.py
中的class来维护状态,也不能更改add(value)
中的签名,否则thirdparty.py
中的module_a.add(value)
将无法工作.
理想情况下我想写另一个 class 来与 module_a.py
交互并记住每次传递给 add(value)
的值,但是如何做到这一点?
你的问题的答案是here。您可以像这样为 python 函数设置内部变量:
def add(value):
# code written by me
add.state = add.state+1
do_something()
add.state = 0
我想 运行 第三方 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()
现在我的问题是,每次 thirdparty.py
调用 module_a.add(value)
时,我如何记住 value
?
我目前的解决方法是将 value
写回 do_something()
中的外部文件。但是,我不想涉及任何外部文件和 I/O。另外,我既不能使用module_a.py
中的class来维护状态,也不能更改add(value)
中的签名,否则thirdparty.py
中的module_a.add(value)
将无法工作.
理想情况下我想写另一个 class 来与 module_a.py
交互并记住每次传递给 add(value)
的值,但是如何做到这一点?
你的问题的答案是here。您可以像这样为 python 函数设置内部变量:
def add(value):
# code written by me
add.state = add.state+1
do_something()
add.state = 0