from dataclasses import dataclass from typing import Union # def dataclass(cls=None, /, *, init=True, repr=True, eq=True, order=False, # unsafe_hash=False, frozen=False): # """Returns the same class as was passed in, with dunder methods # added based on the fields defined in the class. # # Examines PEP 526 __annotations__ to determine fields. # # If init is true, an __init__() method is added to the class. If # repr is true, a __repr__() method is added. If order is true, rich # comparison dunder methods are added. If unsafe_hash is true, a # __hash__() method function is added. If frozen is true, fields may # not be assigned to after instance creation. # """ @dataclass(frozen=True) class A: a: int b: bool c: str = "asd" f: Union[int, bool, str] = 0 def foo(self): print(self)