который позволяет меньше набирать, меньше проверять данные и т.д. Взгляните сами и решите для себя, что вам больше нравится — эта библиотека или встроенные решения
В статье The One Python Library Everyone Needs (https://glyph.twistedmatrix.com/2016/08/attrs.html) сравниваются простые классы, именованные кортежи и классы данных. В ней по множеству причин рекомендуется использовать сторонний пакет attrs (https://oreil.ly/Rdwlx), который
Реализация той же функциональности с помощью классов данных будет выглядеть несколько иначе: >>> from dataclasses import dataclass >>> @dataclass ... class TeenyDataClass: ... name: str ... >>> teeny = TeenyDataClass('bitsy') >>> teeny.name 'bitsy' Помимо декоратора @dataclass, вам нужно определить атрибуты класса с помощью аннотаций переменных
Именованный кортеж можно сделать также из словаря: >>> parts = {'bill': 'wide orange', 'tail': 'long'} >>> duck2 = Duck(**parts) >>> duck2 Duck(bill='wide orange', tail='long')
Функцию namedtuple можно вызвать, передав ей два аргумента: • имя; • строку, содержащую имена полей, разделенные пробелами. Именованные кортежи не поддерживаются Python автоматически: чтобы их использовать, вам понадобится загрузить отдельный модуль. Мы сделаем это в первой строке следующего примера: >>> from collections import namedtuple
Не обязательно иметь метод __init__() в описании каждого класса — он используется для того, чтобы различать объекты одного класса. Это не то, что в некоторых других языках называется конструктором. Python уже создал объект для вас. Метод __init__() следует рассматривать скорее как средство инициализации.
Вы можете использовать функции как элементы списков, кортежей, множеств и словарей. Функции неизменяемы, поэтому их можно применять даже в качестве ключей для словарей.