【问题标题】:Python: remember module function call valuesPython:记住模块函数调用值
【发布时间】: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


【解决方案1】:

您的问题的解决方案是here。您可以像这样为 python 函数设置内部变量:

def add(value):
    # code written by me
    add.state = add.state+1 
    do_something()
add.state = 0

【讨论】:

    猜你喜欢
    • 2015-02-03
    • 2018-10-07
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多