Python中有枚举类型吗?

python

python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型

方法1. 使用自定义类

class Numbers(object):

  ONE = 1

  TWO = 2

  THREE = 3

assert Numbers.ONE == 1

assert Numbers.TWO == 2

assert Numbers.THREE == 3

方法2:使用函数动态创建类

def enum(**enums):

  return type('Enum', (object,), enums)

Numbers = enum(ONE=1, TWO=2, THREE=3)

assert Numbers.ONE == 1

assert Numbers.TWO == 2

assert Numbers.THREE == 3

方法3:创建一个从python的集合扩展来的对象

class Enum(set):

  def __getattr__(self, name):

    if name in self:

      return name

    raise AttributeError

Numbers = Enum( "ONE TWO THREE".split() )

error = False

try:

  print Numbers.ONE

  print Numbers.TWO

  print Numbers.THREE

except:

  error = True

assert error == False

try:

  print Numbers.FOUR

except:

  error = True

assert error == True

以上是 Python中有枚举类型吗? 的全部内容, 来源链接: utcz.com/z/524149.html

回到顶部