我发现了同样的问题,但我无法在那里评论答案。 Python: Calling a function from a file that has current file imported
我有一个.py:
import two
def one_bis()
print('something')
def one():
two.two()
one()
...和two.py:
def two():
one_bis()
乌尔里希·埃克哈特(Ulrich Eckhardt)提出了一些可能性,其中有两个我感兴趣的(粗体):
- 将公共功能移动到由其他模块导入的模块。
- 将两个模块合并为一个。
- 将函数从main传递给需要调用它的代码。
- 猴子在导入后将该功能修补到检查模块中。
- 重构整个内容,以便您不会有循环依赖。
我该如何解决这些问题?
答案 0 :(得分:1)
这不是你的答案,我该如何以复杂的方式做到这一点?"问题,但还有一个替代方案。
# one.py
import two
def one_bis():
print('something')
def one():
two.two()
one()
# two.py
def two():
from one import one_bis
one_bis()
如果您确实要修补模块two
,请在致电one
(调用one()
)之前将以下代码添加到模块two.two()
。
two.two = one_bis
但我建议重构您的应用程序。
答案 1 :(得分:1)
好吧,我不知道这是否有帮助,但是我做了一些修改,发现对我来说,最好的方法是将它作为一种论点传递,我也在寻找类似的东西,所以这里是
# one.py
import two
def one_bis():
print('something')
def one():
a=one_bis
two.two(a)
one()
然后
#two.py
def two(n=None):
if n!=None:
return n()