【发布时间】:2015-08-08 21:55:14
【问题描述】:
在 Python 中是否可以有枚举的枚举?例如,我想拥有
enumA
enumB
elementA
elementB
enumC
elementC
elementD
我可以将elementA 称为enumA.enumB.elementA,或将elementD 称为enumA.enumC.elementD。
这可能吗?如果有,怎么做?
编辑:当以天真的方式实施时:
from enum import Enum
class EnumA(Enum):
class EnumB(Enum):
member = 0
print(EnumA)
print(EnumA.EnumB.member)
它给出:
<enum 'EnumA'>
Traceback (most recent call last):
File "Maps.py", line 15, in <module>
print(EnumA.EnumB.member)
AttributeError: 'EnumA' object has no attribute 'member'
【问题讨论】:
-
首先,您必须使用 stdlib
enum模块或第三方模块以 Python 语法实际编写此代码。所以……你试过了吗?会发生什么? -
我很好奇 - 为什么你首先需要这个功能?这个的具体用例是什么?
-
@inspectorG4dget 我想在我的 RPG 引擎的通用对象系统中提供一个对象分类系统。例如,可以将对象分类为terrain.rocks.smallRock 或武器.melee.swords.shortSword。有没有更好的办法?
-
这似乎应该是动态信息,而不是静态信息——换句话说,你存储在字符串或元组中的东西,而不是类型的一部分。除非这意味着用于嵌入式 Python 控制台或其他东西?
-
对象引擎中的对象类型是不可变的——尽管我现在正在重新考虑这一点。
标签: python python-3.x enums