Например, я бы сделал это:
Код: Выделить всё
@dataclass(frozen=True)
class CONSTANTS:
STATUS_SUCCESS = 200
STATUS_ERROR = 400
SI_UNIT_MASS = "kg"
SI_UNIT_LENGTH = "m"
Код: Выделить всё
def func():
something = True
if something:
return CONSTANTS.STATUS_SUCCESS
else:
return CONSTANTS.STATUS_ERROR
Поэтому я подумал, что могу просто добавить это:
Код: Выделить всё
@dataclass(frozen=True)
class TYPES:
STATUS = Literal[CONSTANTS.STATUS_SUCCESS, CONSTANTS.STATUS_ERROR]
SI_UNIT = Literal[CONSTANTS.SI_UNIT_MASS, CONSTANTS.SI_UNIT_LENGTH]
Код: Выделить всё
def func() -> TYPES.STATUS:
Код: Выделить всё
Variable not allowed in type expressionPylancereportInvalidTypeForm
Код: Выделить всё
@dataclass(frozen=True)
class TYPES:
STATUS = Literal[200, 400]
SI_UNIT = Literal["kg", "m"]
Существует ли для этого стандартный подход?
Я также хотел бы переписать КОНСТАНТЫ так, как мне хотелось бы
Код: Выделить всё
@dataclass(frozen=True)
class CONSTANTS:
STATUS = STATUS
SI_UNIT = SI_UNIT
Код: Выделить всё
@dataclass(frozen=True)
class STATUS:
SUCCESS = 200
ERROR = 400
...
Подробнее здесь: https://stackoverflow.com/questions/792 ... -dataclass
Мобильная версия