回答:
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値を整数のように動作させる必要がある場合は、IntEnumtypeを使用します。各要素はのサブクラスで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に印刷したい場合にも使用できます。x1
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>