Они не рассматриваются каким-либо особым образом.Они используются модулем enum для того, чтобы
- Не быть случайно переопределенным
например,
class Status(Enum):
alive = auto()
dead = auto()
missing = auto()
Вы можете видеть, что Status.missing
и Status._missing_
разные объекты.Если бы метод Enum _missing_
был назван missing
, мы бы переопределили его.
не показывался бы как закрытый.Имя _value
в python считается частным.Чтобы выразить, что они не являются частными (что, опять же, пользователь может захотеть, чтобы значение перечисления было частным), им вместо этого дают имена sunder
другие альтернативы, такие как __double_leading_underscore
и __dunder__
также имеют особые значения в Python, как вы сказали выше.Методы _sunder_
в Enum
действуют подобно протоколам __dunder__
на чистом python, но не зарезервированы языком.
По сути, это опция, позволяющая избежать имени атрибутаконфликтует, не создавая неправильного впечатления.