如何一次性将Python Enum成员作为无类名前缀的常量暴露
一次性导入枚举所有成员到全局命名空间的方法
方法1:遍历枚举成员注入全局
不用逐个写赋值语句,直接遍历枚举类的__members__属性,把成员批量加到全局命名空间里:
import enum class Test(enum.Enum): ONE = 1 TWO = 2 THREE = 3 # 批量处理所有枚举成员 for name, member in Test.__members__.items(): globals()[name] = member # 直接使用,不用加Test前缀 print(ONE) # 输出 Test.ONE print(THREE.value) # 输出 3
方法2:模块化场景用导入语法
如果把枚举类放在单独模块里(比如my_enums.py),可以直接用from ... import *一次性导入所有成员:
my_enums.py代码:
import enum class Test(enum.Enum): ONE = 1 TWO = 2 THREE = 3
主脚本中:
from my_enums.Test import * # 直接使用成员 print(TWO) # 输出 Test.TWO
注意点
- 用
globals()注入时要留意命名冲突,全局已有的同名变量会被覆盖。 - 导入后的成员和通过
Test.XXX访问的是同一个枚举实例,功能完全一致。
内容的提问来源于stack exchange,提问作者Utkonos
相关产品推荐
相关产品推荐

