web-dev-qa-db-ja.com

列挙-文字列変換で列挙の値を取得

次の列挙型が定義されています

from enum import Enum


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


print(D.x)

今、印刷された値は

D.x

代わりに、列挙型の値を印刷したかった

1

この機能を実現するにはどうすればよいですか?

63
Vaibhav Mishra

Enumobjectを印刷しています。単に印刷する場合は、.value属性を使用します。

print(D.x.value)

列挙型メンバーとその属性へのプログラムによるアクセスセクション を参照してください:

Enumメンバーがあり、その名前または値が必要な場合:

>>>
>>> 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
119
Martijn Pieters

次を使用してアクセスを実装しました

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

    def __str__(self):
        return '%s' % self.value

今私はできる

print(D.x)は結果として1を取得します。

self.nameの代わりにxを印刷する場合は、1を使用することもできます。

4
Vaibhav Mishra