Есть ли способ сделать что-то подобное в python?
from enum import Enum, auto
def some_func(mode = Mode.A):
class Mode(Enum):
A = auto()
print(mode == Mode.A)
желаемый результат
>>> some_func()
True
Приведенный выше фрагмент не работает с NameError: name 'Mode' is not defined
предположительно потому, что class Mode
не определяется, когда интерпретатор читает def some_func(mode = Mode.A):
Вы, конечно, можете поместить Enum вне функции, но, если то, что я предлагаю, или что-то подобное сработало, я бы предпочел оставить его внутри. Хранение его внутри инкапсулирует режим, в котором он предназначен для использования, надеюсь, позволяет синтаксису .
отличать guish от других похожих классов Mode
.
Я знаю, что многие * Код 1024 * просто использует для этой цели строки, не беспокоясь о Enums. Однако я хотел бы найти решение, используя Enums. Перечисления легче поддерживать, и они помогают IDE генерировать автозавершение кода и т. Д. c.
Есть ли хороший способ сделать эту работу?