python enumeration_如何在python中将int转换为Enum?

我想要类似的东西,这样我就可以从一个引用访问值对的任何一部分。香草的版本:#!/usr/bin/env python3

from enum import IntEnum

class EnumDemo(IntEnum):

ENUM_ZERO = 0

ENUM_ONE = 1

ENUM_TWO = 2

ENUM_THREE = 3

ENUM_INVALID = 4

#endclass.

print('Passes')

print('1) %d'%(EnumDemo['ENUM_TWO']))

print('2) %s'%(EnumDemo['ENUM_TWO']))

print('3) %s'%(EnumDemo.ENUM_TWO.name))

print('4) %d'%(EnumDemo.ENUM_TWO))

print()

print('Fails')

print('1) %d'%(EnumDemo.ENUM_TWOa))

失败将按预期引发异常。

更强大的版本:#!/usr/bin/env python3

class EnumDemo():

enumeration = (

'ENUM_ZERO', # 0.

'ENUM_ONE', # 1.

'ENUM_TWO', # 2.

'ENUM_THREE', # 3.

'ENUM_INVALID' # 4.

)

def name(self, val):

try:

name = self.enumeration[val]

except IndexError:

# Always return last tuple.

name = self.enumeration[len(self.enumeration) - 1]

return name

def number(self, val):

try:

index = self.enumeration.index(val)

except (TypeError, ValueError):

# Always return last tuple.

index = (len(self.enumeration) - 1)

return index

#endclass.

print('Passes')

print('1) %d'%(EnumDemo().number('ENUM_TWO')))

print('2) %s'%(EnumDemo().number('ENUM_TWO')))

print('3) %s'%(EnumDemo().name(1)))

print('4) %s'%(EnumDemo().enumeration[1]))

print()

print('Fails')

print('1) %d'%(EnumDemo().number('ENUM_THREEa')))

print('2) %s'%(EnumDemo().number('ENUM_THREEa')))

print('3) %s'%(EnumDemo().name(11)))

print('4) %s'%(EnumDemo().enumeration[-1]))

如果未正确使用,这将避免创建异常,而是返回故障指示。一个更像python的方法是返回“None”,但我的特定应用程序直接使用文本。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值