From docs https://docs.python.org/3/library/enum.html#creating-an-enum:
枚举是一组绑定到唯一常量值的符号名称(成员)。在枚举中,可以通过身份比较成员,并且可以迭代枚举本身。
所以,枚举成员应该是symbolic names
,而不是字符串文字。
如果您想使用数字作为名称,您可以在其前面添加前缀_
or m_
,因为私有属性以下划线开头 https://stackoverflow.com/questions/1301346/what-is-the-meaning-of-single-and-double-underscore-before-an-object-name
另外,您可以使用IntEnum https://docs.python.org/3/library/enum.html#enum.IntEnum对于整数枚举。
from enum import IntEnum
class MemorySize(IntEnum):
m_1024 = 1024
m_2048 = 2048
print(MemorySize.m_1024.value)
Output
1024
另外,这里可以省略逗号"1024" = 1024,
.
实际上1024,
是一个只有一个元素的元组(1024, )
and 1024
只是 int。我只是很好奇,为什么你可以将 tuple 和 int 传递给 Enum 属性。
我发现它的价值IntEnum
属性传递给int
构造函数。在此之前,它将 args 转换为元组EnumMeta.__new__
if not isinstance(value, tuple):
args = (value, )
else:
args = value
您可以传递到int
构造函数的第二个参数,基数:
因为int("ff", 16) == 255
。或者只使用字符串常量而不是 int 因为int("123") == 123
.
所以,你可以使用IntEnum
像这样的任何数字系统的值(尽管我认为这不是在实践中使用它的好方法)
class WeiredEnum(IntEnum):
m_255 = "ff", 16
m_256 = "256"
print(WeiredEnum.m_255.value)
print(type(WeiredEnum.m_256.value))
> 255
> <class 'int'>