将非整数成员值添加到 Python3 中的 IntEnum
Adding non-integer member values to IntEnum in Python3
我大致有以下几点:
class Foo(IntEnum):
a = 0
b = auto()
c = auto()
strings = ["Alpha", "Beta", "Charlie"]
def __str__(self):
return Foo.strings[self]
但是,这引发了:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'EnumMeta'
我的 Foo
class 中需要额外的数据,但 Python 似乎不喜欢那样。
我是否做错了什么,或者有更好的方法吗?我习惯在 C++ 中枚举 类。
经过相当多的挖掘,我找到了一种方法来获得我正在寻找的正确行为。首先,我必须使用 Enum
而不是 IntEnum
。其次,我不得不升级到 Python3.11
并使用 nonmember
功能来标记不可枚举的东西。
我大致有以下几点:
class Foo(IntEnum):
a = 0
b = auto()
c = auto()
strings = ["Alpha", "Beta", "Charlie"]
def __str__(self):
return Foo.strings[self]
但是,这引发了:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'EnumMeta'
我的 Foo
class 中需要额外的数据,但 Python 似乎不喜欢那样。
我是否做错了什么,或者有更好的方法吗?我习惯在 C++ 中枚举 类。
经过相当多的挖掘,我找到了一种方法来获得我正在寻找的正确行为。首先,我必须使用 Enum
而不是 IntEnum
。其次,我不得不升级到 Python3.11
并使用 nonmember
功能来标记不可枚举的东西。