Раздел 45 · Python backend: Тарбадель

Тесты на типы и проверка в рантайме

middle-senior~35 мин

без входаВойди, чтобы отмечать прогресс, вести заметки и решать задачи в редакторе. войти

Узор показывает, что он сделал:

import json
from dataclasses import dataclass


@dataclass(frozen=True)
class Seal:
    by: str
    at: int


raw = json.loads('{"by": "Квот", "at": "03:00"}')
seal = Seal(**raw)
print(seal)
print(seal.at + 100)

Никто не врёт. Аннотация at: int это обещание для mypy, а mypy читает код, а не то, что придёт по сети. Конверт пришёл по сети во время работы, json.loads отдал его как Any, и все обещания на нём молчат. А с другой стороны стоит Квот, который научился глушить mypy так, что тот молчит и о коде. Сегодня две проверки проверяющих. Первая следит, что mypy ругается там, где должен. Вторая сверяет значения с аннотациями тогда, когда mypy уже не смотрит: во время работы.

урок из курса

Урок из курса «Python backend: Тарбадель». Курс покупается один раз и остаётся навсегда: 500 ₽.

Оплата пока не подключена: премиум и курсы открываются промокодом.