• 技术文章 >常见问题 >Python常见问题

    Python中有枚举类型吗?

    PythonPython2019-06-15 10:35:42原创3265
    python中没有enum枚举类型,可能python认为这玩意压根就没用,下面列举了三种方法模拟enum枚举类型

    方法1. 使用自定义类

    1

    2

    3

    4

    5

    6

    7

    class Numbers(object):

      ONE = 1

      TWO = 2

      THREE = 3

    assert Numbers.ONE == 1

    assert Numbers.TWO == 2

    assert Numbers.THREE == 3

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

    1

    2

    3

    4

    5

    6

    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的集合扩展来的对象

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    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
    上一篇:Python中怎么处理字符编码问题 下一篇:Python怎么生成xml文件

    相关文章推荐

    • Python中SQLite的简单应用• Python中实现URL的解析• 用Python怎么实现邮件功能

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网