您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

跨模块的Python枚举

跨模块的Python枚举

就Python而言,这里有 模块:

从命令行(主要入口点)运行的文件始终存储为__main__模块。如果您moduleA代码中的任何位置导入,Python都会将其视为与__main__模块分开的,而是创建一个新的模块对象。因此,您有两个 单独的MyEnum类:

他们的成员是不同的,因此不能相等。

如果import moduleA您未使用import __main__ as moduleA或使用 单独的 脚本文件来驱动测试,则测试通过。该单独的文件将变为__main__

#!/usr/bin/python3
# test.py, separate from moduleA.py and moduleB.py

import moduleA    
import moduleB

if __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。

python 2022/1/1 18:52:51 有331人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶