В чем разница навесить или не навесить декоратор @dataclass
Python
Middle
Без компании
В чем разница навесить или не навесить декоратор @dataclass
Ответы
Декоратор `@dataclass` автоматически генерирует специальные методы (`__init__`, `__repr__`, `__eq__` и др.) для класса, сокращая boilerplate-код. Без него эти методы нужно писать вручную.
Пример с `@dataclass`:
```
from dataclasses import dataclass
@dataclass
class Point:
x: int
y: int
```
Эквивалент без декоратора:
```
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
return f"Point(x={self.x}, y={self.y})"
def __eq__(self, other):
return self.x == other.x and self.y == other.y
```
Ключевые отличия:
- `@dataclass` автоматически создает `__init__`, `__repr__`, `__eq__`
- Поддерживает type hints (но не проверяет типы)
- Можно добавить методы вручную при необходимости
- Есть дополнительные параметры: `frozen=True`, `order=True` и др.