Python DataClasses

dataclasses is a module that supports the creation of simple classes.


Decorators

@DataClass

Use the @dataclass decorator on a class to automatically generate dunder methods.

import dataclasses

@dataclasses.dataclass
class User:
    name: str       # 'name' has no defualt value
    id: int = 1000  # 'id' defaults to 1000

A TypeError is raised if a field without a default value follows a field with a default value.


Classes

Field

A Field object represents a field in a dataclass. For complex logic, a dataclass can be defined in terms of Field objects.

A Field object is instantiated with the field() function. This function takes the following optional named arguments:

A Field object has name and type atributes, as well as attribute matching the names and meanings of the field() function's arguments.

To create a dataclass with a field that defaults to an empty list, try:

import dataclasses

@dataclasses.dataclass
class User:
    groups: list[int] = dataclass.field(default_factory=list)

u = User()
u.groups += [1, 2, 3]


Functions

AsDict

import dataclasses

@dataclasses.dataclass
class Point:
     x: int
     y: int

p = Point(10, 20)
dataclasses.asdict(p)  # {'x': 10, 'y': 20}


AsTuple

import dataclasses

@dataclasses.dataclass
class Point:
     x: int
     y: int

p = Point(10, 20)
dataclasses.astuple(p)  # (10, 20)


Fields

Extract the Field objects from a dataclass.


Is_DataClass

Returns True if passed a dataclass.


Make_DataClass

An alternative constructor for dataclasses.


Replace


Constants

KW_ONLY is a type annotation used for dataclasses.

import dataclasses

@dataclasses.dataclass
class Point:
    x: float
    _: dataclass.KW_ONLY
    y: float
    z: float

p = Point(0, y=1.5, z=2.0)

MISSING is a sentinel value used internally.


See also

Python dataclasses module documentation


CategoryRicottone

Python/DataClasses (last edited 2023-06-15 20:49:37 by DominicRicottone)