Python Glossary English

Python 3.11+enumпонятие

enum.property

атрибуты

Аналог встроенного property для перечислений: позволяет атрибуту члена называться так же, как другой член, — так устроены name и value.

Синтаксис

@enum.property
def attr(self): ...

Благодаря ему в Enum можно завести члены с именами name и value: Field.name — член, а Field.name.name — его имя. Свойство и одноимённый член должны быть в разных классах: свойство в базовом Enum, член — в наследнике. При обращении через класс, а не через член, enum.property даёт AttributeError, тогда как обычный property вернул бы сам объект property. Для своих вычисляемых атрибутов членов хватает и обычного @property; enum.property нужен, когда имя может совпасть с членом.

Примеры

from enum import Enum
class Field(Enum):
    name = 1
    value = 2
print(Field.name, Field.name.name, Field.value.value)  # → Field.name name 2
# Python 3.12+
import enum
class Planet(enum.Enum):
    EARTH = (5.97e24, 6.37e6)
    @enum.property
    def mass(self):
        return self.value[0]
print(Planet.EARTH.mass)  # → 5.97e+24
try:
    Planet.mass
except AttributeError as e:
    print(e)  # → <enum 'Planet'> has no attribute 'mass'

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности