20
loading...
This website collects cookies to deliver better user experience
dataclasses
module, you came to the right place!from dataclasses import dataclass
@dataclass
class Car:
color: str
manufacturer: str
top_speed_km: int
class Car:
color: str
manufacturer: str
top_speed_km: int
def __init__(self, color: str, manufacturer: str, top_speed_km: bool):
self.color = color
self.manufacturer = manufacturer
self.top_speed_km = top_speed_km
def __lt__(self, other_car):
return self.top_speed_km < other_car.top_speed_km
red_ferrari = Car(color='red', manufacturer='Ferrari', top_speed_km=320)
print(red_ferrari) # <__main__.Car object at 0x7f218789ca00>
black_ferrari = Car(color='red', manufacturer='Ferrari', top_speed_km=347)
print(red_ferrari < black_ferrari) # True
from dataclasses import dataclass
@dataclass(order=True)
class Car:
color: str
manufacturer: str
top_speed_km: int
slow_tesla = Car(top_speed_km=261, color='white', manufacturer='Tesla')
print(slow_tesla) # Car(color='white', manufacturer='Tesla', top_speed_km=261)
fast_tesla = Car(top_speed_km=280, color='white', manufacturer='Tesla')
print(slow_tesla < fast_tesla) # True
slow_tesla
object, we see the actual values of the object, not the object's address, unlike the previous example.from dataclasses import dataclass
@dataclass
class Car:
color: str
manufacturer: str
top_speed_km: int
@dataclass
class ElectricCar(Car):
battery_capacity_kwh: int
maximum_range_km: int
white_tesla_model_3 = ElectricCar(color='white', manufacturer='Tesla', top_speed_km=261, battery_capacity_kwh=50, maximum_range_km=455)
print(white_tesla_model_3)
# ElectricCar(color='white', manufacturer='Tesla', top_speed_km=261, battery_capacity_kwh=50, maximum_range_km=455)
class Car:
color: str
manufacturer: str
top_speed_km: int
def __init__(self, color: str, manufacturer: str, top_speed_km: int):
self.color = color
self.manufacturer = manufacturer
self.top_speed_km = top_speed_km
class ElectricCar(Car):
battery_capacity_kwh: int
maximum_range_km: int
def __init__(self, color: str, manufacturer: str, top_speed_km: int, battery_capacity_kwh: int, maximum_range_km: int):
super().__init__(color, manufacturer, top_speed_km)
self.battery_capacity_kwh = battery_capacity_kwh
self.maximum_range_km: maximum_range_km
white_tesla_model_3 = ElectricCar(color='white', manufacturer='Tesla', top_speed_km=261, battery_capacity_kwh=50, maximum_range_km=455)
print(white_tesla_model_3)
frozen=True
to the data class decorator, it lets us create immutable Python objects.from dataclasses import dataclass
@dataclass(frozen=True)
class Car:
color: str
manufacturer: str
top_speed_km: int
white_tesla = Car(color='white', manufacturer='Tesla', top_speed_km=261)
white_tesla.color = 'Red'
white_tesla
to a red tesla, will give us a FrozenInstanceError error message:dataclasses.FrozenInstanceError: cannot assign to field 'color'
dataclasses
is a powerful module that helps us, Python developers, model our data, avoid writing boilerplate code ,and write much cleaner and elegant code.