from decorator import my_dataclass, my_dataclass_frozen_default @my_dataclass() class B1: x: int y: str z: float = 0.0 B1.x = 5 b1 = B1(1, "2") b1.x = 2 b1.y = "3" b1.z = 1.0 del b1.x del b1.y del b1.z @my_dataclass(frozen=False) class B2: x: int y: str z: float = 0.0 B2.x = 5 b2 = B2(1, "2") b2.x = 2 b2.y = "3" b2.z = 1.0 del b2.x del b2.y del b2.z @my_dataclass(frozen=True) class B3: x: int y: str z: float = 0.0 B3.x = 5 b3 = B3(1, "2") b3.x = 2 b3.y = "3" b3.z = 1.0 del b3.x del b3.y del b3.z @my_dataclass_frozen_default() class B4: x: int y: str z: float = 0.0 B4.x = 5 b4 = B4(1, "2") b4.x = 2 b4.y = "3" b4.z = 1.0 del b4.x del b4.y del b4.z