我有两个脚本:
scriptone.py
import scripttwo
def test():
print "Hello World"
scripttwo.test()
scripttwo.py
def test():
print "Hello World"
scriptone.test()
我遇到的问题是我导入的脚本(scripttwo.py
)无法访问从其导入的脚本中的函数(scriptone.py
);怎么会这样做?
我不希望重构我的代码,因为我只需要能够从导入脚本的脚本中访问函数。
答案 0 :(得分:1)
您可以通过重组项目或使用回调来解决此问题。
重组方法:
回调方法:
scriptone.py
import scripttwo
def test():
print "Hello World"
scripttwo.test(test)
scripttwo.py
def test(callback):
print "Hello World"
callback()
现在,scripttwo并不真正需要查看来自scriptone的函数 - 你传递它需要作为参数调用的函数(回调)。
解决循环导入的另一种方法是使用函数变量,它看起来像这样:
scriptone.py
import scripttwo
def test():
print "Hello World"
scripttwo.scriptone_test = test
scripttwo.test()
scripttwo.py
scriptone_test = None
def test():
print "Hello World"
scriptone_test()
这与回调方法非常相似,除非您不需要更改函数 - 而是在对任何scripttwo函数进行任何调用之前需要执行各种“设置”。