Create Data Classes in Python
Create Data Classes in Python
1 of 7 9/21/2021, 9:58 AM
Creating Data Classes in Python | Python in Plain English https://python.plainenglish.io/create-data-classes-in-python-6...
class Point():
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
__eq__
__repr__
__ge__
@dataclass
2 of 7 9/21/2021, 9:58 AM
Creating Data Classes in Python | Python in Plain English https://python.plainenglish.io/create-data-classes-in-python-6...
@dataclass
class Point():
x : int
y : int
z : int
__init__
__eq__ __repr__
>>> p = Point(1,2,3)
>>> print(p)
Point(x=1, y=2, z=3)
@dataclass
class Point():
# non-optional parameters
x : int
y : int
# optional parameters
z : int = 0
field
dataclasses
@dataclass
3 of 7 9/21/2021, 9:58 AM
Creating Data Classes in Python | Python in Plain English https://python.plainenglish.io/create-data-classes-in-python-6...
class User():
id : str
name : str = field(default = "unknown")
subscribed: list = field(default_factory=list)
"unknown"
list()
@dataclass
class User():
id : int
name : str
email : str
@dataclass(eq = False)
class User2():
id : int
name : str
email : str
4 of 7 9/21/2021, 9:58 AM
Creating Data Classes in Python | Python in Plain English https://python.plainenglish.io/create-data-classes-in-python-6...
if type(o) == User2:
return self.id == o.id and self.name == o.name and
self.email == o.email
return False
eq=False __eq__
id name
email field()
@dataclass
class User():
id : int
name : str
email : str = field(compare=False)
False
@dataclass(order = True)
class User():
id : int
name : str
email : str
5 of 7 9/21/2021, 9:58 AM
Creating Data Classes in Python | Python in Plain English https://python.plainenglish.io/create-data-classes-in-python-6...
id
name email
__gt__
@dataclass(order=True)
class User():
id : int
name : str
email : str = field(compare=False)# The email will not
be compared
False
True __hash__
6 of 7 9/21/2021, 9:58 AM
Creating Data Classes in Python | Python in Plain English https://python.plainenglish.io/create-data-classes-in-python-6...
eq=True frozen=True
dataclasses
7 of 7 9/21/2021, 9:58 AM