S1riyS
@S1riyS

Как указать тип переменной?

У меня есть класс ApiCallData:
class ApiCallData(t.NamedTuple):
    code: str
    compiler: Language.compiler # Вот эта строка под вопросом
    stdin: str

Где поле compiler может принимать только те значения, которые были указаны при создании объектов класса Language

@dataclass(frozen=True)
class Language:
    name: str
    fullname: str
    compiler: str
    mode: str
    icon_name: str = 'default'
    is_default: bool = False

Как правильно указать тип compiler?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Не очень ясно, что требуется.
Если тебе требуется помещать в эту переменную экземпляры класса Language, то пишешь compiler: Language

Если же у тебя есть набор строковых значений, которые там могут быть, оформи их как enum.Enum и пропиши этот класс.
class CompilerEnum(enum.Enum):
    C = 'C'
    CPP = 'C++'
    ADA = 'Ada'
    FORTRAN = 'Fortran'

class ApiCallData(t.NamedTuple):
    code: str
    compiler: CompilerEnum
    stdin: str


Это подразумевает, что ты знаешь список языков на момент запуска скрипта.
Если это не так, то статическая типизация не поможет, тебе придётся прописывать тип str и проверять корректность вручную.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы