折腾:
期间,对于一个Python中的枚举变量:class ItemType(enum.Enum):
Unknown = "Unknown" # not set yet
Small = "Small" # like file
Medium = "Medium" # use bag
Large = "Large" # use box
VeryLarge = "VeryLarge" # use car
希望对应的变量:class EnumItem(fields.Raw):
def format(self, value):
gLog.debug("value=%s", value)
return "%s" % (value)
‘itemType’ : EnumItem(attribute="itemType"),
输出的是:
value=Small
结果是:
value=ItemType.Small
python enum to string
加上str(unicode)的强制转换?
结果:class EnumItem(fields.Raw):
def format(self, value):
gLog.debug("value=%s", value)
gLog.debug("str(value)=%s", str(value))
gLog.debug("unicode(value)=%s", unicode(value))
valueStr = "%s" % (value)
gLog.debug("valueStr=%s", valueStr)
return valueStr
输出:
DEBUG in Task [/root/RunningFast/staging/runningfast/resources/Task.py:40]:
value=ItemType.Small
DEBUG in Task [/root/RunningFast/staging/runningfast/resources/Task.py:41]:
str(value)=ItemType.Small
DEBUG in Task [/root/RunningFast/staging/runningfast/resources/Task.py:42]:
unicode(value)=ItemType.Small
DEBUG in Task [/root/RunningFast/staging/runningfast/resources/Task.py:44]:
valueStr=ItemType.Small
python string enum output field value
python string enum format
python enum string format>>> print(Color.red.name)
red
>>> member = Color.red
>>> member.name
‘red’
>>> member.value
1
看来是可以:
通过枚举值的name和value,分别获得枚举值名字和对应的值
然后代码:class ItemType(enum.Enum):
Unknown = "Unknown" # not set yet
Small = "Small" # like file
Medium = "Medium" # use bag
Large = "Large" # use box
VeryLarge = "VeryLarge" # use car
class EnumItem(fields.Raw):
def format(self, someEnum):
gLog.debug("someEnum=%s", someEnum)
gLog.debug("str(someEnum)=%s", str(someEnum))
gLog.debug("unicode(someEnum)=%s", unicode(someEnum))
someEnumStr = "%s" % (someEnum)
gLog.debug("someEnumStr=%s", someEnumStr)
someEnumName = someEnum.name
someEnumValue = someEnum.value
gLog.debug("someEnumName=%s, someEnumValue=%s", someEnumName, someEnumValue)
return someEnumValue
就可以输出需要的结果了:
DEBUG in Task [/root/RunningFast/staging/runningfast/resources/Task.py:40]:
someEnum=ItemType.Small
DEBUG in Task [/root/RunningFast/staging/runningfast/resources/Task.py:41]:
str(someEnum)=ItemType.Small
DEBUG in Task [/root/RunningFast/staging/runningfast/resources/Task.py:42]:
unicode(someEnum)=ItemType.Small
DEBUG in Task [/root/RunningFast/staging/runningfast/resources/Task.py:44]:
someEnumStr=ItemType.Small
DEBUG in Task [/root/RunningFast/staging/runningfast/resources/Task.py:48]:
someEnumName=Small, someEnumValue=Small
【总结】
此处,Python中的enum(注意,此处虽然是Python 2.7,但是安装了python34中enum34:
pip install enum34,所以使用起来,就是Python 3.4中的enum)
想要输出对应的字符串类型的enum中的对应的某个enum变量的值,即值的字符串,可以使用:someEnumValue = someEnum.value
即可。
另外,想要输出枚举值中某个类型的名字,可以用:someEnumName = someEnum.name