Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Dataclass: определение и применение
Dataclass — это декоратор из модуля dataclasses (Python 3.7+), который автоматически генерирует специальные методы (__init__, __repr__, __eq__, __hash__) для классов, содержащих в основном данные. Это удобный способ создавать классы для хранения данных без написания большого количества стандартного кода.
Основное применение
Dataclass идеально подходит для:
- Структур данных — группировка связанных переменных
- Конфигураций — хранение параметров приложения
- DTO (Data Transfer Objects) — обмен данными между слоями
- Кэширования — создание ключей для мемоизации
Базовый пример
from dataclasses import dataclass
from typing import Optional
@dataclass
class User:
id: int
name: str
email: str
age: Optional[int] = None
user = User(id=1, name="Alice", email="alice@example.com")
print(user) # User(id=1, name='Alice', email='alice@example.com', age=None)
Преимущества dataclass
- Меньше кода — не нужно писать
__init__,__repr__,__eq__ - Типизация из коробки — аннотации типов автоматически используются
- Удобство сравнения —
__eq__работает по значениям - Читаемость — код выглядит как объявление структуры
Продвинутые параметры
from dataclasses import dataclass, field
from typing import List
@dataclass(frozen=True)
class Config:
host: str
port: int
db_name: str
@dataclass
class Pipeline:
name: str
tasks: List[str] = field(default_factory=list)
metadata: dict = field(default_factory=dict)
def __post_init__(self):
self.created_at = datetime.now()
Dataclass vs обычный класс
Обычный класс требует больше кода для достижения тех же результатов. С dataclass код становится компактнее и понятнее.
Практический пример: обработка данных
from dataclasses import dataclass, asdict
import json
@dataclass
class QueryMetrics:
query_id: str
duration_ms: float
rows_processed: int
metrics = QueryMetrics(
query_id="q123",
duration_ms=1234.5,
rows_processed=1000000
)
metrics_json = json.dumps(asdict(metrics))
Вывод: dataclass — это современный питоничный способ создания простых классов для данных, который экономит время разработки и повышает читаемость кода.