为什么类变量的类型是替代类的类型?

时间:2019-06-29 06:31:11

标签: python

在这里,括号的内容表示超类。

class Tag(enum.Enum):
    a = 1
    b = 2
if __name__ == '__main__":
    print(Tag.a)

输出如下:

Tag.a

将“ Tag.a”替换为“ Tag.a.value”后,得到的输出如下:

1

为什么类变量的类型是超类的类型?我听不懂代码。请尽可能明确地解释结果。

1 个答案:

答案 0 :(得分:3)

The docs很好:

  

enum —对枚举的支持3.4版中的新功能。

     

源代码:Lib / enum.py

     

枚举是一组绑定到唯一的符号名称(成员),   常数值。在枚举中,可以通过以下方式比较成员   身份,并且枚举本身可以被迭代。

     

[...]

     

创建枚举使用类语法创建枚举,   这使得它们易于读写。另一种创作   方法在Functional API中进行了描述。要定义一个枚举,   子类Enum如下:

>>>
>>> from enum import Enum
>>> class Color(Enum):
...     RED = 1
...     GREEN = 2
...     BLUE = 3
...
     

注意Enum成员值成员值可以是任何值:int,str等。   如果确切值不重要,则可以使用自动实例和   将会为您选择适当的值。如果您要小心   将auto与其他值混合。

     

注意命名法Color类是一个枚举(或枚举)

     

Color.RED,Color.GREEN等属性是枚举成员   (或枚举成员),并且是功能常数。

     

枚举成员具有名称和值(Color.RED的名称为RED,   Color.BLUE的值是3,依此类推。)

     

注意即使我们使用类语法来创建枚举,但枚举仍然是   不是普通的Python类。有关更多信息,请参见How are Enums different?   细节。   枚举成员具有易于理解的字符串表示形式:

>>>
>>> print(Color.RED)
Color.RED