{"id":14285,"url":"\/distributions\/14285\/click?bit=1&hash=346f3dd5dee2d88930b559bfe049bf63f032c3f6597a81b363a99361cc92d37d","title":"\u0421\u0442\u0438\u043f\u0435\u043d\u0434\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f","buttonText":"","imageUuid":""}

Data classes в python

Что такое data classes и для чего они нужны?

Одна из новых возможностей, появившихся в Python 3.7 — классы данных (Data classes). Они призваны автоматизировать генерацию кода классов, которые используются для хранения данных. Не смотря на то, что они используют другие механизмы работы, их можно сравнить с "изменяемыми именованными кортежами со значениями по умолчанию".

Большинству python-разработчикам приходится регулярно писать классы.

Пример data class.

Создадим DataClass, представляющий собой разные виды мячей:

По умолчанию у декоратора Data Class есть методы __init__, __repr__ и __eq__, поэтому их не нужно реализовывать самостоятельно.

И пусть __init__, __repr__ и __eq__ не реализованы в классе Balls их по-прежнему можно использовать благодаря dataclass. Это экономит время.

Также стоит отметить name, number и color являются полями нашего класса. Стоит отметить, что с ними необходимо использовать определения типов данных

Обратите внимание, что для некоторых полей заданы значения по умолчанию. Дефолтным значением может быть изменяемая величина, и даже можно задать список допустимых значений. Например, вот так:

Дописываем тест и получаем:

Конвертация в словарь или кортеж.

Можно получить атрибуты Data Class в кортеже или словаре. Для этого нужно лишь импортировать функции asdict и astuple из Data Class.

Пример с asdict:

Пример с astuple:

Подклассы

Можно создавать подклассы для Data Class как для обычных классов в Python:

Подписывайтесь на канал, тут каждый день выходят новые уроки.

Все уроки, а также коды с уроков вы можете найти в моем telegram канале.

Также каждый день в telegram канале появляются полезные книги и пособия с материалом по программированию, а также выходят эффективные фишки, которые значительно упрощают вашу работу с программированием.

0
Комментарии
-3 комментариев
Раскрывать всегда