Python枚举 - 在字符串转换中获取枚举值

时间:2014-06-30 09:54:25

标签: python python-3.x enums python-3.4

我有以下枚举定义

from enum import Enum


class D(Enum):
    x = 1
    y = 2


print(D.x)

现在打印的值是

D.x

相反,我希望枚举的值是打印

1

可以采取哪些措施来实现这一功能。

3 个答案:

答案 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]