Python 枚举-在字符串转换时获取枚举值
我定义了以下枚举Python 枚举-在字符串转换时获取枚举值,python,python-3.x,enums,python-3.4,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 hh如何实现此功能?您正在打印枚举对象。如果只想打印以下内容,请使用.value属性: print(D.x.value) 见: 如果您有枚举成员并需要其名称或值: >>> >>> member = Color.red >>>
from enum import Enum
class D(Enum):
x = 1
y = 2
print(D.x)
现在打印值为
D.x
相反,我想打印枚举的值
1
hh如何实现此功能?您正在打印枚举对象。如果只想打印以下内容,请使用.value
属性:
print(D.x.value)
见:
如果您有枚举成员并需要其名称或值:
>>>
>>> member = Color.red
>>> member.name
'red'
>>> member.value
1
如果您只想提供自定义字符串表示形式,则可以将\uuuu str\uuu
方法添加到枚举中:
class D(Enum):
def __str__(self):
return str(self.value)
x = 1
y = 2
演示:
>>从枚举导入枚举
>>>D类(枚举):
... 定义(自我):
... 返回str(self.value)
... x=1
... y=2
...
>>>D.x
>>>打印(D.x)
1.
我使用以下方法实现了访问
class D(Enum):
x = 1
y = 2
def __str__(self):
return '%s' % self.value
现在我可以做了
打印(D.x)
以获得结果1
您也可以使用
self.name
来打印x
而不是1
我应该澄清访问参数,我知道D.x.value,我想要的是D.x字符串转换来返回值,如果问题没有明确说明条件,很抱歉。为什么要使用字符串格式和self.\u value\u
return str(self.value)
更简单。我刚刚查看了源代码,这就是它的实现方式,但是您是对的,self.value
更简洁。单下划线属性是生成的枚举类的内部属性;最好坚持使用文档化的属性(它恰好是一个特殊的描述符,这样您仍然可以在枚举类型上使用value
作为名称)。@MartijnPieters同意当我将它与一个整数值进行比较时,它将作为对象返回。例如:如果D.x==10:…
。我应该用什么方法来处理整数?@alper:完全一样D.x
是枚举对象,D.x.value
是整数值。如果必须让枚举值像整数一样工作,请使用,其中每个元素都是int
的子类,因此IntEnumD.x==10
将起作用。我添加了def\uu eq\uuuuuuuuu(self,other):return int(self.value)=other
和def\uu int\uuuuuuuuuuuuuuuuuu(self):return int(self.value)
但我仍然认为我必须在不使用的情况下使用.value
comparing@alper:当其他
是另一个枚举值时,均衡
实现不起作用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