Dataclasses are python classes, but are suited for storing data objects. This module provides a decorator and functions for automatically adding generated special methods such as
__repr__() to user-defined classes.
They store data and represent a certain data type. Ex: A number. For people familiar with ORMs, a model instance is a data object. It represents a specific kind of entity. It holds attributes that define or represent the entity.
They can be compared to other objects of the same type. Ex: A number can be greater than, less than, or equal to another number.
Python 3.7 provides a decorator dataclass that is used to convert a class into a dataclass.
>>> class Number: ... def __init__(self, val): ... self.val = val ... >>> obj = Number(2) >>> obj.val # 2
>>> @dataclass ... class Number: ... val: int ... >>> obj = Number(2) >>> obj.val # 2
It is easy to add default values to the fields of your data class.
>>> @dataclass ... class Product: ... name: str ... count: int = 0 ... price: float = 0.0 ... >>> obj = Product("Python") >>> obj.name # Python >>> obj.count # 0 >>> obj.price # 0.0
It is mandatory to define the data type in dataclass. However, If you would rather not specify the datatype then, use
>>> from dataclasses import dataclass >>> from typing import Any >>> @dataclass ... class WithoutExplicitTypes: ... name: Any ... value: Any = 42