zoukankan      html  css  js  c++  java
  • 23. 枚举类和元类

    枚举类和元类

    枚举类

    from enum import Enum
    Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'))
    

    可以直接使用Month.Jan来引用一个常量,或者枚举它的所有成员:

    for name, member in Month.__members__.items():
    	print(name, '=>', member, ',', member.value)
    

    value属性则是自动赋给成员的int常量,默认从1开始计数。

    如果需要更精确地控制枚举类型,可以从Enum派生出自定义类:

    from enum import Enum, unique
    @unique
    class Weekday(Enum):
        Sun = 0 # Sun的value被设定为0
        Mon = 1
        Tue = 2
        Wed = 3
        Thu = 4
        Fri = 5
        Sat = 6
    

    @unique装饰器可以帮助我们检查保证没有重复值。

    >>> day1 = Weekday.Mon
    >>> print(day1)
    Weekday.Mon
    >>> print(Weekday.Tue.value)
    2
    

    Enum可以把一组相关常量定义在一个class中,且class不可变,而且成员可以直接比较。

    元类

    ...

  • 相关阅读:
    Codeforces 691A Fashion in Berland
    HDU 5741 Helter Skelter
    HDU 5735 Born Slippy
    HDU 5739 Fantasia
    HDU 5738 Eureka
    HDU 5734 Acperience
    HDU 5742 It's All In The Mind
    POJ Euro Efficiency 1252
    AtCoder Beginner Contest 067 C
    AtCoder Beginner Contest 067 D
  • 原文地址:https://www.cnblogs.com/BigMario/p/13577878.html
Copyright © 2011-2022 走看看