Python 3中的自定义枚举类型

2024-04-26 09:44:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我肯定这是重复的,但我现在找不到。你知道吗

在这个例子中,为什么没有定义self?你知道吗

class State(Enum):
    MY_STATE = type(self)('foo', 'bar')

    def __init__(self, some, thing):
        self.some = some
        self.thing = thing

State替换type(self)也会返回NameError,但对于State。你知道吗


Tags: self定义fooinitmydeftypebar
2条回答

self没有定义,因为您在类变量中引用它,而不是实例变量。它类似于在另一种语言的static方法中使用this。对于State也是一样,在引用它时,类还没有定义,名称也不存在。你知道吗

为什么不这样提取另一个类:

from enum import Enum


class MyClass:
    def __init__(self, some, thing):
        self.some = some
        self.thing = thing


class State(Enum):
    MY_STATE = MyClass('foo', 'bar')


print(State.MY_STATE == State.MY_STATE)

相关问题 更多 >