我有以下枚举定义
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D.x)
现在打印的值是
D.x
相反,我希望枚举的值是打印
1
可以采取哪些措施来实现这一功能。
答案 0 :(得分:96)
您正在打印枚举对象。如果您只想打印它,请使用.value
属性:
print(D.x.value)
请参阅Programmatic access to enumeration members and their attributes section:
如果您有枚举成员并且需要其名称或值:
>>> >>> member = Color.red >>> member.name 'red' >>> member.value 1
如果您想要提供自定义字符串表示形式,则可以在枚举中添加__str__
方法:
class D(Enum):
def __str__(self):
return str(self.value)
x = 1
y = 2
演示:
>>> from enum import Enum
>>> class D(Enum):
... def __str__(self):
... return str(self.value)
... x = 1
... y = 2
...
>>> D.x
<D.x: 1>
>>> print(D.x)
1
答案 1 :(得分:3)
我使用以下
实现了访问权限class D(Enum):
x = 1
y = 2
def __str__(self):
return '%s' % self.value
现在我可以做到
print(D.x)
获得1
作为结果。
如果您想打印self.name
而不是x
,也可以使用1
。
答案 2 :(得分:0)
使用的最直接的 dunder 方法是 _repr_ 而不是 _str_,因为它也允许您以这种方式在列表中打印它。< /p>
class D(Enum):
x = 1
y = 2
def __repr__(self):
return self.value
print([D.x,D.y])
>>> [1, 2]