Встречается на собеседованиях • сегодня

В чем разница между @dataclass и обычным классом в Python

@dataclass — это декоратор из модуля dataclasses, который автоматически генерирует стандартные методы (__init__, __repr__, __eq__ и др.) для класса, сокращая boilerplate-код. Основные отличия от обычного класса:

  1. Автоматические методы:
    В @dataclass не нужно вручную писать __init__, __repr__ и другие методы, если поля класса объявлены с аннотациями типов.
  1. Сравнение объектов:
    @dataclass автоматически реализует __eq__ для сравнения по полям (если eq=True).

  2. Неизменяемость:
    Можно сделать класс неизменяемым через frozen=True.

  3. Значения по умолчанию:
    Полям можно задавать значения по умолчанию прямо в объявлении.

Пример:

python
from dataclasses import dataclass

@dataclass
class Point:
    x: int
    y: int = 0  # значение по умолчанию

# Автоматически создан __init__, __repr__ и __eq__
p1 = Point(1, 2)
p2 = Point(1, 2)
print(p1 == p2)  # True (сравнение по полям)

Обычный класс потребовал бы ручной реализации этих методов. @dataclass упрощает работу с классами-контейнерами данных.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы