Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: dataclass, frozen, immutable, python

Что делает параметр frozen=True в датаклассе?

Проверяет понимание параметра frozen=True в dataclass, который делает экземпляры класса неизменяемыми.

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

Параметр frozen=True в декораторе @dataclass делает экземпляры класса неизменяемыми. После создания объекта его поля нельзя изменить напрямую. Это полезно для создания конфигураций или объектов, которые не должны меняться после инициализации.

Длинный ответ

Что такое frozen=True в dataclass?

Параметр frozen=True в декораторе @dataclass делает экземпляры класса неизменяемыми (immutable). Это означает, что после создания объекта его атрибуты нельзя изменить напрямую. Если попытаться присвоить новое значение полю, будет вызвано исключение FrozenInstanceError.

Как это работает?

Когда frozen=True, dataclass автоматически генерирует методы __setattr__ и __delattr__, которые запрещают изменение или удаление атрибутов. Это похоже на использование namedtuple, но с большей гибкостью, так как можно добавлять методы и наследование.

Пример кода

from dataclasses import dataclass

@dataclass(frozen=True)
class Point:
    x: int
    y: int

p = Point(1, 2)
print(p.x)  # 1
# p.x = 3  # Ошибка: FrozenInstanceError

Где применяется?

  • Конфигурации и настройки, которые не должны меняться во время выполнения.
  • Объекты-значения (value objects) в DDD.
  • Ключи для словарей или элементы множеств, так как неизменяемые объекты хешируемы.

Вывод

Используйте frozen=True, когда нужно гарантировать неизменность данных после создания объекта. Это повышает безопасность и предсказуемость кода, особенно в многопоточных средах или при работе с конфигурациями.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • Python

    Python

Ключевые слова

#dataclass

#frozen

#immutable

#python

Подпишись на Python Developer в телеграм

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.