定义。在这个特殊的例子,它是完全OK了module2.py进口main.py,也有一些疑难杂症的虽然。
最明显的是,main.py可能是从命令行运行的,如python main.py
,它的作用是使该文件认为它被称为__main__
。你可以在module2中导入这个模块,但这是不寻常的;它被称为“main.py”,你想import main
。这样做会导致模块第二次导入。
对于要确定,你必须为导入文件有没有副作用除非它导入为__main__
安排。 python中一个非常常见的习惯用法是在模块结束时测试该条件。
import module2
global x
hello="Hello"
def main():
x=module2.message()
x.say()
if __name__ == '__main__':
main()
而现在module2.py实际进口main
它只是罚款。另一方面,将变量从一个模块导入另一个模块难以预测何时可以递归导入,您可能还没有该变量,因为该模块已经试图导入您。另一方面,使用虚线语法在模块中引用变量总是安全的。所以,你的module2.py应该是:
import main
class message:
def say():
print main.hello
这也使得它更加明显流向何方hello
是从哪里来的。
啊是的,我真的不想使用这种方法,但我认为这是唯一的选择。 – thelost 2011-12-28 20:30:22