怎么在Python里代替枚举类型呢?


    PEP435标准里已经把枚举添加到Python3.4版本,在Pypi中也可以向后支持3.3, 3.2, 3.1, 2.7, 2.6, 2.5, 和 2.4版本.

    如果想向后兼容,如果下载enum(没有数字)将会是另一个版本.

    1. class Animals(Enum):
    2. ant = 1
    3. bee = 2
    4. cat = 3
    5. dog = 4

    在更早的版本,下面这种方法来完成枚举:

    像这样来用:

    1. >>> Numbers.ONE
    2. 1
    3. >>> Numbers.TWO
    4. 2
    5. >>> Numbers.THREE

    也很容易支持自动计数,像下面这样:

    1. >>> Numbers.ZERO
    2. 0
    3. >>> Numbers.ONE
    4. 1

    如果要把值转换为名字可以加入下面的方法:

    这样会覆盖名字下的所有东西,但是对于枚举的输出很有用.如果转换的值不存在就会抛出KeyError异常.用前面的例子: