Dataclasses Python
Dataclasses — это классы Python, но они подходят для хранения объектов данных. Этот модуль предоставляет декоратор и функции для автоматического добавления сгенерированных специальных методов, таких как __init__() и __repr__(), в пользовательские классы.
Особенности
Они хранят данные и представляют определенный тип данных. Например, число. Для тех, кто знаком с ORM, экземпляр модели — это объект данных. Он представляет определенный вид сущности. Он содержит атрибуты, которые определяют или представляют эту сущность.
Их можно сравнивать с другими объектами того же типа. Например, число может быть больше, меньше или равно другому числу.
Python 3.7 предоставляет декоратор dataclass, который используется для преобразования класса в dataclass.
class Number:
def __init__(self, val):
self.val = val
obj = Number(2)
obj.val
2
с dataclass
# Dataclass: автоматически генерирует методы __init__ и __repr__
from dataclasses import dataclass
@dataclass # Декоратор преобразует класс в dataclass
class Number:
val: int # Обязательная аннотация типа
obj = Number(2) # __init__ создается автоматически
obj.val
2
Значения по умолчанию
Легко добавить значения по умолчанию для полей вашего класса данных.
# Dataclass со значениями по умолчанию: поля со значениями по умолчанию должны следовать за обязательными полями
@dataclass
class Product:
name: str # Обязательное поле
count: int = 0 # Необязательное поле со значением по умолчанию
price: float = 0.0 # Необязательное поле со значением по умолчанию
obj = Product("Python") # Требуется только name, остальные используют значения по умолчанию
obj.name
Python
obj.count
0
obj.price
0.0
Войдите в систему, чтобы ответить на эту викторину и отслеживать свой прогресс обучения
Подсказки типов (Type hints)
Обязательно указывать тип данных в dataclass. Однако, если вы предпочитаете не указывать тип данных, используйте typing.Any.
from dataclasses import dataclass
from typing import Any
@dataclass
class WithoutExplicitTypes:
name: Any
value: Any = 42