Data Classes in Python
dataclass decorator is introduced since Python 3.7.
A decorated class behaves like a regular Python class, but it automatically generates several dunder methods:
__repr__. The auto-generated constructor method is particular helpful if you have many fields in a class (e.g. a wrapper class for JSON objects). It also introduces a new dunder method was defined for any additional processing:
Also note that each field has a type hint, which is great in terms of self-documenting.
An example from https://github.com/ErnstHaagsman/swapi/blob/master/main.py
@dataclass class StarWarsMovie: title: str episode_id: int opening_crawl: str director: str producer: str release_date: datetime characters: List[str] planets: List[str] starships: List[str] vehicles: List[str] species: List[str] created: datetime edited: datetime url: str def __post_init__(self): if type(self.release_date) is str: self.release_date = dateutil.parser.parse(self.release_date) if type(self.created) is str: self.created = dateutil.parser.parse(self.created) if type(self.edited) is str: self.edited = dateutil.parser.parse(self.edited)