回答:
enum オブジェクトを印刷しています。.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
if D.x == 10: ...
。整数にはどのようなアプローチを取るべきですか?
D.x
は列挙オブジェクトでD.x.value
、整数値です。enum値を整数のように動作させる必要がある場合は、IntEnum
typeを使用します。各要素はのサブクラスでint
あり、IntEnumD.x == 10
機能します。
def __eq__(self, other): return int(self.value) == other
とdef __int__(self): return int(self.value)
、まだ私が使用することを持っていると思う.value
、私は比較使用していないときのケースで
__eq__
場合、その実装は機能しませんother
。D.x == D.y
ここで、D.x.value == D.y.value
真となり、例えば失敗します。IntEnum
代わりに使いたいようですEnum
。
以下を使用してアクセスを実装しました
class D(Enum):
x = 1
y = 2
def __str__(self):
return '%s' % self.value
今私はただできる
print(D.x)
1
結果として取得します。
の代わりself.name
に印刷したい場合にも使用できます。x
1
self._value_
?return str(self.value)
より簡単です。
self.value
クリーンです。
value
、列挙型の名前として引き続き使用できる)に固執してください。
Enum
文字列を使用してへのアクセスを検索したところ、このページが見つかりました。私はこれがこの特定の質問で尋ねられていることではないことを知っていますが、タイトルはそれを「示唆」しています。
文字列を使用してEnumを取得するには、次の操作を実行できます。
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D["x"]) # <D.x: 1>