При enum.Enum
имена переменных класса сами становятся атрибутом name
перечисляемых атрибутов экземпляра Enum
, поэтому вам не нужно указывать KING
кортеж значения и имени:
class Rank(Enum):
King = 13
print(Rank.King.name) # outputs 'King'
print(Rank.King.value) # outputs 13
Если вы хотите назвать переменные класса заглавными буквами, но иметь их значения name
в смешанном регистре, а это не то, для чего предназначена Enum
, вам придется создать подкласс Enum
и переопределите метод name
самостоятельно, чтобы настроить поведение:
from enum import Enum, DynamicClassAttribute
class MixedCaseEnum(Enum):
@DynamicClassAttribute
def name(self):
return self._name_.title()
class Rank(MixedCaseEnum):
KING = 13
print(Rank.KING.name) # outputs 'King'
print(Rank.KING.value) # outputs 13