Data classes в python

Data classes в python

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

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

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

Пример data class.

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

Data classes в python

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

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

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

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

Data classes в python

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

Data classes в python
Data classes в python

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

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

Пример с asdict:

Data classes в python
Data classes в python

Пример с astuple:

Data classes в python
Data classes в python

Подклассы

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

Data classes в python
Data classes в python

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

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

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

22
Начать дискуссию