Forwarded from Python Academy
Классы данных
Еще в Python 3.7 добавили такую мощную штуку, как классы данных. Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных.
Встроенный модуль
Важно отметить, что аннотации типов обязательны. Все поля, которые не имеют отметок о типе будут проигнорированы. Конечно, если вы не хотите использовать конкретный тип, вы можете указать
В результате вы автоматически получаете класс, с реализованными методами
#dataclass
Еще в Python 3.7 добавили такую мощную штуку, как классы данных. Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных.
Встроенный модуль
dataclasses
содержит декоратор @dataclass
. С его использованием код будет выглядеть лаконично и коротко. Пример на картинке выше.Важно отметить, что аннотации типов обязательны. Все поля, которые не имеют отметок о типе будут проигнорированы. Конечно, если вы не хотите использовать конкретный тип, вы можете указать
Any
из модуля typing
.В результате вы автоматически получаете класс, с реализованными методами
__init__
, __repr__
, __str__
и __eq__
. Кроме того, это будет обычный класс и вы можете наследоваться от него или добавлять произвольные методы.#dataclass
Forwarded from Python Community
⚡️ Классы, хранящие данные
Если вы писали какие-либо системы, то вам точно было необходимо передавать данные между ними в классах. Чтобы упростить создание таких классов, разработчики придумали dataclass.
Это декоратор, переопределяющий
Как видно из примера выше, Point не имеет никаких методов для инициализации или вывода, но они переопределены. Это напоминает структуры из си-подобных языков.
Если вам стало интересно, можете почитать подробнее в документации.
#миниурок #dataclass
Если вы писали какие-либо системы, то вам точно было необходимо передавать данные между ними в классах. Чтобы упростить создание таких классов, разработчики придумали dataclass.
Это декоратор, переопределяющий
__init__
, __repr__
и другие, на основе переменных, определённых внутри класса.Как видно из примера выше, Point не имеет никаких методов для инициализации или вывода, но они переопределены. Это напоминает структуры из си-подобных языков.
Если вам стало интересно, можете почитать подробнее в документации.
#миниурок #dataclass