Найти в Дзене
Машинное обучение

Пишем на Python еще проще: как создать свой класс за пару строчек с модулем dataclass

Аналитики данных и Data Scientist’ы очень любят Python – удобный в изучении и простой в использовании объектно-ориентированный язык, который содержит множество встроенных функций и позволяет создавать собственные. Согласно принципу DRY (Don’t Repeat Yourself), современным стандартом разработки является упаковка кода в классы, которые предоставляют API для использования их методов. На практике создавать собственные классы в Python приходится достаточно часто, с последующим дополнением и расширением их по мере работы. Делать это быстрее поможет стандартный модуль dataclasses, который сперва следует импортировать. Затем нужно задекорировать пользовательский класс специальной функцией dataclass, а внутри этого класса перечислить необходимые атрибуты, предварительно их аннотировав, т.е. задав типы. Например, для пользовательского класса Person с целочисленным идентификатором и строковым именем это будет выглядеть так:

from dataclass import dataclass

@dataclass

class Person:

id: int

name: str

Модуль dataclasses предоставляет декоратор и функции для автоматического добавления сгенерированных специальных методов, таких как init  () и repr  (), в определенные пользователем классы. Впрочем, пользоваться модулем dataclasses нужно с умом и знать о следующих особенностях:

• по умолчанию модуль не проверяет тип, указанный в аннотации переменной;

• декоратор dataclass() добавляет в пользовательский класс некоторые методы, которые могут быть лишними и дублировать поведение уже существующих в классе;

• при использовании декоратора dataclass(), все базовые классы просматриваются в обратном порядке, начиная с объекта и для каждого найденного класса добавляются атрибуты его родителя в упорядоченное отображение полей. Все сгенерированные методы будут использовать это комбинированное вычисляемое упорядоченное сопоставление полей. А, поскольку поля расположены в порядке их вставки, производные классы переопределяют базовые.

#machinelearning #artificialintelligence #ai #datascience #python #programming #technology #deeplearning

Machinelearning