Python 3.11+enumфункция
enum.global_str
глобализация
Функция __str__ для членов глобализированного перечисления: печатает голое имя члена без префикса класса.
Синтаксис
enum.global_str(member)
Напрямую её почти никогда не вызывают: это деталь механики декоратора @global_enum, который дублирует члены перечисления в глобальном пространстве модуля (как re.IGNORECASE) и подменяет __str__ на эту функцию. Смысл в том, чтобы print(IGNORECASE) и f-строка печатали ровно то имя, под которым константа доступна в модуле, а не RegexFlag.IGNORECASE. Побочный эффект — str() и repr() у такого члена расходятся, и это нормально.
Примеры
import enum
print(callable(enum.global_str)) # → True
Color = enum.Enum('Color', 'RED GREEN')
print(str(Color.RED)) # → Color.RED
print(enum.global_str(Color.RED)) # → RED
Color.__str__ = enum.global_str
print(str(Color.GREEN)) # → GREEN
print(repr(Color.GREEN)) # → <Color.GREEN: 2>
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности