栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

跨模块的Python枚举

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

跨模块的Python枚举

就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。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662440.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号