РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
178 of 307 menu

Метод model_copy

Метод model_copy применяется к экземпляру модели и возвращает её копию. Первым параметром передаётся словарь update с полями для изменения. Вторым параметром - флаг deep, который определяет глубину копирования вложенных объектов. По умолчанию создаётся поверхностная копия.

Синтаксис

model.model_copy(*, update=None, deep=False)

Пример

Давайте создадим модель User и получим её копию с изменённым полем name:

from pydantic import BaseModel class User(BaseModel): name: str age: int user = User(name='abcde', age=25) res = user.model_copy(update={'name': 'article'}) print(res)

Результат выполнения кода:

name='article' age=25

Пример

Давайте получим поверхностную копию без изменений и убедимся, что это разные объекты:

from pydantic import BaseModel class User(BaseModel): name: str age: int user = User(name='abcde', age=25) res = user.model_copy() print(res) print(res is user)

Результат выполнения кода:

name='abcde' age=25 False

Пример

Давайте создадим модель с вложенным объектом и сравним поверхностное и глубокое копирование:

from pydantic import BaseModel class Address(BaseModel): city: str class User(BaseModel): name: str address: Address user = User(name='abcde', address=Address(city='hello')) shallow = user.model_copy() deep = user.model_copy(deep=True) print(shallow.address is user.address) print(deep.address is user.address)

Результат выполнения кода:

True False

Пример

Давайте применим метод model_copy внутри обработчика FastAPI для создания изменённой копии:

from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class User(BaseModel): name: str age: int @app.get('/user') def get_user(): user = User(name='abcde', age=25) res = user.model_copy(update={'age': 30}) return res

Результат выполнения кода для адреса /user:

{"name": "abcde", "age": 30}

Смотрите также

  • класс BaseModel,
    который является базовым классом для всех моделей Pydantic
  • метод model_dump,
    который преобразует модель в словарь
  • метод model_dump_json,
    который преобразует модель в JSON-строку
  • метод model_validate,
    который создаёт модель из словаря или объекта
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить