就Python而言,这里有 三个 模块:
__main__
moduleA
moduleB
从命令行(主要入口点)运行的文件始终存储为
__main__模块。如果您
moduleA在代码中的任何位置导入,Python都会将其视为与
__main__模块分开的,而是创建一个新的模块对象。因此,您有
两个 单独的
MyEnum类:
__main__.MyEnum
moduleA.MyEnum
他们的成员是不同的,因此不能相等。
如果
import moduleA您未使用
import __main__ as moduleA或使用 单独的
脚本文件来驱动测试,则测试通过。该单独的文件将变为
__main__:
#!/usr/bin/python3# test.py, separate from moduleA.py and moduleB.pyimport moduleA import moduleBif __name__ == "__main__": myVar = moduleA.MyEnum.B moduleB.doStuff(myVar)
另一个解决方法是告诉Python
__main__并且
moduleA是同一回事。 在
导入
moduleA(或
moduleB导入
moduleA) 之前 ,您可以将另一个条目添加到
sys.modules:
if __name__ == '__main__': import sys sys.modules['moduleA'] = sys.modules['__main__']import moduleB
我认为这不是Pythonic。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)