Python枚举成员将枚举的所有其他成员都作为属性,包括它们自己,这些成员也是如此.因此,所有成员都是无限递归的.

from enum import Enum

class TT(Enum):
    m1 = 1
    m2 = 2
    m3 = 3
    
t1 = TT['m1']
t1.m2.m3.m3.m1.m2.m2.m1.m3.value
>>> 3

这是为什么?

推荐答案

您可以从类的实例访问类属性.

因此,如果求值为t1.m2,则访问的是类属性TT.m2.如果你判断t1.m2.m3,你就是进入TT.m2,然后是TT.m3.

对于其字段是类实例的非枚举类,也会得到同样的结果.

class Foo:
    pass
Foo.A = Foo()
Foo.B = Foo()
Foo.C = Foo()

Foo.A.B.C.A.C is Foo.C # True

枚举为您提供了这样的 struct .

Python相关问答推荐

如何接收非原始对象作为查询参数?

无法在Python中使用Selenium标记正确的元素以抓取网站

在Python中添加期货之间的延迟

使用decorator 自动继承父类

想要使用Polars groupby_Dynamic来缩减时间序列收件箱(包括空垃圾箱)

如何将不同长度的新列添加到现有的框架中

如何知道标志是否由用户传递或具有默认值?

pyramid 内部数组中的连续序列-两极

如何通过多2多字段过滤查询集

比较两个二元组列表,NP.isin

根据不同列的值在收件箱中移动数据

如何比较numPy数组中的两个图像以获取它们不同的像素

rame中不兼容的d类型

如何从具有不同len的列表字典中创建摘要表?

输出中带有南的亚麻神经网络

如何找到满足各组口罩条件的第一行?

Python键入协议默认值

删除字符串中第一次出现单词后的所有内容

字符串合并语法在哪里记录

在Python中调用变量(特别是Tkinter)