Ten moduł wprowadza dekorator @dataclass z modułu dataclasses, który automatycznie generuje metody __init__, __repr__ i __eq__, eliminując kod boilerplate (ponad 30 linii kodu zastępionych 5). Moduł ten, wprowadzony w Python 3.7 na mocy PEP 557, stanowi część standardowej biblioteki — nie wymaga instalacji. W przeciwieństwie do namedtuple, który również generuje klasy danych ale w formacie krotki, dataclass daje pełną elastyczność klas mutowalnych z możliwością dziedziczenia i własnych metod.
Omówione są adnotacje typów pól (str, int, float, list, Optional), wartości domyřlne z ostrzeżeniem przed pułapką mutowalnych argumentów domyřlnych, funkcja field() do zaawansowanej konfiguracji oraz parametry dekoratora: frozen=True dla klas niemutowalnych, order=True dla automatycznych operatorów porównania, init, repr i eq do selektywnego generowania. Przedstawione są również funkcje asdict(), astuple() do konwersji, metoda __post_init__() do walidacji oraz dziedziczenie z dataclass. Praktyczne przykłady klas Punkt, Osoba i Student ilustrują zastosowania. Każdy przykład pokazuje różny stopień zaawansowania — od prostych struktur po złożone domeny biznesowe.
- Problem boilerplate'u — ręczne pisanie
__init__,__repr__,__eq__vs jedna linia z@dataclass. Typowa klasa danych wymaga ~30 linii kodu;@dataclassredukuje to do 5. - Dekorator @dataclass — parametry init, repr, eq, order, frozen, porównanie 30 vs 5 linii kodu. Dekorator analizuje adnotacje typów i generuje odpowiednie metody w locie.
- Pola i typowanie — adnotacje typów, wartości domyřlne, pułapka mutowalnych domyślnych (
None+field(default_factory=list)). Typy nie są wymuszane w runtime, ale służą narzędziom zewnętrznym. - Zaawansowane funkcje —
field()z parametrami default, default_factory, init, repr, compare, hash;frozen=Truedla niemutowalności (obiekty hashowalne),order=Truedla sortowania. - Metody pomocnicze —
__post_init__do walidacji stanu po utworzeniu,asdict()iastuple()do konwersji na słownik/krotkę, dziedziczenie dataclass z zachowaniem wszystkich wygenerowanych metod. - Porównanie z alternatywami —
namedtupledaje niemutowalne krotki z nazwanymi polami, ale brak dziedziczenia i mutowalności.attrszewnętrzna biblioteka z większą liczbą funkcji.dataclassto złoty środek wbudowany w standardową bibliotekę.








































