from dataclasses import dataclass
@dataclass
class Rectangle:
# Constructor
height: float
width: float
@dataclass
class Square(Rectangle):
# initialization with default value
side: float = 4
# post initialize inheritance constructor
def __post_init__(self):
super().__init__(self.side, self.side)
sq = Square(height=10, width=2)
print(sq)
# output Square(height=4, width=4, side=4)
# Standard way of writing a simple class
class Person1:
# Type hinting not required
def __init__(self, name: str, age: int, num_children=0):
self.name = name
self.age = age
self.num_children = num_children
def __repr__(self):
return f'My name is {self.name}, I am {self.age} years old, and I have {self.num_children} children'
from dataclasses import dataclass
# A class using data classes. Dataclasses are simpler but can't support operations during initialization
@dataclass()
class Person2:
""" This class handles the values related to a person. """
name: str # Indicating types is required
age: int
num_children = 0 # Default values don't require an indication of a type
def __repr__(self):
return f'My name is {self.name}, I am {self.age} years old, and I have {self.num_children} children'
# Both classes (Person1 and Person2) achieve the same thing but require different code to do it
person1 = Person1('Joe', 28, 2)
print(person1)
# Result: My name is Joe, I am 28 years old, and I have 2 children
person2 = Person2('Emma', 19)
print(person2)
# Result: My name is Emma, I am 19 years old, and I have 0 children
# dataclass module is introduced in Python 3.7 as a utility tool
# to make structured classes specially for storing data.
# These classes hold certain properties and functions to deal
# specifically with the data and its representation.
pip install dataclasses
# Check other ans for the usage