Датаклассы
Наконец-то спустя год дошли руки написать про датаклассы 🌷 Меня спросили на собесе в ламоду, и тогда я про них либо краем уха слышала, либо вообще не слышала. Но точно не использовала. Посмотрим, что с ними можно делать
Зачем?
Датакласс описывает данные, но без кучи лишних методов. Он сам вместо нас добавит init, repr, eq по дефолту. Набор методов можем сами менять с помощью флагов
Как создать?
Чтобы датаклассы заработали, нужно их импорнуть и добавить в виде аннотации:
from dataclasses import dataclass
@dataclass class SparkParams: """Dataclass для параметров spark-submit команды."""
name: str deploy_mode: str driver_cores: int driver_memory: str executor_cores: int executor_memory: str num_executors: int
Готово! Никакие методы добавлять не нужно
Как использовать? spark_params = SparkParams("test_app", "cluster", 2, "4g", 4, "32g", 8)
Другие фишки
Запрещаем менять поля:
@dataclass(frozen=True)
Задаем дефолтные значения:
@dataclass class Team: description: str | None = None emails: list[str] = field(default_factory=list) # для list/dict/set
Чуть подробнее можно прочитать в короткой статье
@data_engineerette