-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path08_dataclass_params.py
31 lines (25 loc) · 1.43 KB
/
08_dataclass_params.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
"""
Ukázka všech parametrů, které můžeme při vytvoření datové třídy využít.
order - defaultně False, při zapnutí se implementuje metody __lt__, __gt__, __eg__, __el__
eq - defaultně True, při zapnutí implementuje metody __eq__, __ne__
init - defaultně True, implementuje __init__ metodu
repr - defaultně True, implementuje __repr__ metodu
frozen - defaultně False, při zapnutí nám nedovolí vytvořenou instanci měnit
unsafe_hash - Nebudeme vysvětlovat, protože se jedná o složitější koncept a není
pravděpodobné, že bychom jej opravdu potřebovali. Zjednodušeně řečeno, ovlivňuje zda bude
implementována dunder metoda __hash__.
Pozor, neovlivňuje to sám, ale vždy jde o kombinaci parametrů order, frozen, unsafe_hash.
"""
from dataclasses import dataclass, field
@dataclass(order=True, frozen=False, unsafe_hash=False, init=True, eq=True, repr=True)
class Person:
name: str = field(compare=False, default="John")
surname: str = field(compare=False, default="Doe")
age: int = field(repr=False, default=66)
height: int = field(compare=False, repr=False, default=180)
john = Person()
john_bad_copy = Person(surname="Doh")
great_zohn = Person("Zohn", "Zow", 10, 1800)
print(f"{john}\n{john_bad_copy}\njohn == john_bad_copy: {john == john_bad_copy}\n")
print(f"{john}\n{great_zohn}\njohn == great_zohn: {john == great_zohn}\n")
print(f"{john}\n{great_zohn}\njohn < great_zohn: {john < great_zohn}\n")