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
这是为什么?
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 .