【发布时间】:2020-06-23 14:09:11
【问题描述】:
假设我们有三个 python 模块:app.py、commons.py 和 c.py
commons.py:
def func():
pass
def init(app)
global func
func = app.func
app.py:
import commons
import c
# Doing some initialization so that we are ready to override the function
c.foo()
init(app) # the app object contains a function called func which we wish to overwrite in commons.py
c.foo()
c.py:
from commons import *
def foo():
func()
我想要完成的是第一次调用c.foo,它什么都不做,第二次它会执行app.func。我项目中的每个模块都依赖于 commons.py 中的 func,并且该函数必须在运行时声明,因为它附加到一个对象。
有没有办法在python中通过引用导入并更改所有模块中的函数指针?
到目前为止,我所做的是在每个模块中都有一个 init 函数并简单地覆盖空的 lambda 函数,但这似乎是一个糟糕的解决方案。
【问题讨论】:
标签: python oop import reference python-import