Определение вывода программы при инициализации модели

Экземпляр не создастся: возникнет ValidationError из-за отсутствующих обязательных полей. В Pydantic 2.11 первым базовым классом здесь является SecretFlight, поэтому airline остаётся обязательным, как и secret_code.

Короткий ответ

Что ответить на собеседовании

Экземпляр не создастся: возникнет ValidationError из-за отсутствующих обязательных полей. В Pydantic 2.11 первым базовым классом здесь является SecretFlight, поэтому airline остаётся обязательным, как и secret_code.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо выяснить, какое значение будет получено после создания экземпляра класса TaskData с помощью словаря task_data.

from pydantic import Field, BaseModel

task_data = {
    'flight_id': 5,
    'flight_number': 'abc123'
}

class Flight(BaseModel):
    flight_id: int
    airline: str
    flight_number: str

class SecretFlight(Flight):
    secret_code: str

class PatchFlight(Flight):
    airline: str = Field(default=None)
    flight_number: str = Field(default=None)

class TaskData(SecretFlight, PatchFlight):
    ...
    
task_data = TaskData(**task_data)

Ответ

Экземпляр не создастся: возникнет ValidationError из-за отсутствующих обязательных полей. В Pydantic 2.11 первым базовым классом здесь является SecretFlight, поэтому airline остаётся обязательным, как и secret_code.

Поля базовых моделей объединяются с приоритетом первого родителя. Поэтому определение airline из SecretFlight перекрывает вариант с default=None из PatchFlight; в переданном словаре нет ни airline, ни secret_code.

Присваивание task_data = TaskData(**task_data) не завершится, исходная переменная останется словарём. Вывода через print в коде нет. Для ясного контракта переопределите нужные поля прямо в TaskData, например airline: str | None = None, и передавайте secret_code, если он обязателен. Аннотация str с default=None не выражает явно разрешение передавать None; используйте объединение типов.

Источник: raw.githubusercontent.com, docs.pydantic.dev.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее