我可以将File1导入File2,将File2导入File1吗?由于我对PHP的 include 语句以及引入的递归问题的了解,我感到很担心。如果我能做到这一点,那么这是在File2中使用File1中找到的变量的最佳方法吗?
另一种方法是向doSomething添加另一个只传递numberX的参数,但我觉得创建另一个参数是处理这个问题的正确方法。
File1(中央文件):
import File2
class FooBar(): #a big object representing a wxFrame (GUI)
doSomething()
class BarFoo(): #a big object representing a wxFrame (GUI)
numberX = 12345
if __name__ == "__main__":
instance1 = FooBar()
instance2 = BarFoo()
File2(辅助函数):
#from File1 import BarFoo?
def doSomething():
#need numberX here somehow
答案 0 :(得分:2)
两个模块(文件)相互导入没有任何问题,尽管这种技术通常只在需要时才能使用。
确保从第一个模块到第二个模块的任何引用都不依赖于第一个模块(例如,如果numberX基于File2的内容)。像这样复杂的代码相关性并不存在于你的代码中,所以你应该没事!
答案 1 :(得分:1)
有时您可以,但建议。我说有时你可以,因为python知道一个模块已经导入了,不会再尝试导入它,所以python可以在这一点上处理循环模块依赖,但这并不意味着每件事都是正确的。
我将向您展示循环依赖导致问题的情况。
有一个a.py
,它包含:
import b
def foo():
return b.x
print "In module a: " + foo()
在b.py
:
import a
x = '1'
def foo2():
print "In module b: " + a.foo()
然后在python命令行中,如果导入a.py
,它可以正常工作:
>>> import a
In module a: 1
>>> import b
>>> b.foo2()
In module b: 1
但是,如果先导入b.py
,则会出错:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "b.py", line 1, in <module>
import a
File "a.py", line 4, in <module>
print "In module a: " + foo()
File "a.py", line 3, in foo
return b.x
AttributeError: 'module' object has no attribute 'x'