Jak używać klas danych w Python

Jak używać klas danych w Python
W tym artykule obejmie przewodnik po użyciu nowych obiektów „Klasę danych” zawartych w Python 3.7 i nowsze wersje. Klasy danych są takie jak inne klasy Pythona, ale są one specjalnie zaprojektowane do użytku jako kontenery danych i zapewniają czystszą i krótszą składnię do szybkiego tworzenia obiektów danych. Jeśli wiesz o obiektach „NamedTuple” i użyłeś ich w Python, możesz zdefiniować je jako zmienne obiekty typu nameTuple. Możesz tworzyć nowe instancje klas danych, takie jak każda inna klasa lub obiekty typu nazwa.

Podstawowa składnia i użycie

Aby zrozumieć klasę danych i jej składnię, musisz najpierw zrozumieć podstawowy układ i strukturę klasy Python. Poniżej znajduje się przykład pokazujący prostą klasę Python:

Klasa Stockinhand:
def __init __ (jaźń, jabłka, pomarańcze, mango):
samego siebie.jabłka = jabłka
samego siebie.pomarańcze = pomarańcze
samego siebie.mango = mango
Stock = StockInhand (40, 50, 60)
Drukuj (zapas.jabłka, zapas.pomarańcze, zapas.Mango)

W powyższej próbce kodu utworzono nową klasę o nazwie „StockInhand” z zdefiniowaną w niej metodę „__init__”. Metoda __init__ jest automatycznie wywoływana za każdym razem, gdy tworzysz nową instancję klasy StockInhand. W takim przypadku metoda __init__ została zdefiniowana za pomocą niektórych obowiązkowych argumentów. Nie możesz więc utworzyć nowej instancji StockInhand bez pewnych wartości niezbędnych argumentów. Argument „ja” zawiera odniesienie do instancji klasy, dzięki czemu można go użyć w odniesieniu do dowolnej zmiennej lub metody w klasie, o ile te zmienne i metody zostały zdefiniowane, używając argumentu własnego. Argument własny działa jak narzędzie wygody i można go nazwać. Możesz to również całkowicie pominąć. W ostatnich kilku oświadczeniach tworzona jest nowa instancja klasy StockInhand, a jej zmienne są dostępne za pomocą zapisu DOT.

Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

40 50 60

Tę samą klasę można zdefiniować przy użyciu DataClass w następujący sposób:

Z danych Dataclass Import DataClass
@DataClass
Klasa Stockinhand:
Jabłka: int
pomarańcze: int
Mangoes: int
Stock = StockInhand (40, 50, 60)
Drukuj (zapas.jabłka, zapas.pomarańcze, zapas.Mango)

Pierwsza instrukcja importuje dekorator „klas danych” z modułu „Klatki danych”. Dekoratorzy mogą być używane do modyfikowania zachowania przedmiotów Pythona bez ich zmiany. W takim przypadku dekorator DataClass jest predefiniowany i pochodzi z modułu klas danych. Aby zdefiniować klasę danych, musisz dołączyć dekorator klas danych za pomocą symbolu „@” do klasy Python, jak pokazano w powyższej próbce kodu. W następnych kilku instrukcjach zmienne w klasie danych są zdefiniowane za pomocą wskazówek typu, aby wskazać, jaki są typem obiektu. Wskazówki dotyczące typu zostały wprowadzone w Python 3.6 i są one zdefiniowane za pomocą symboli „:” (okrężnicy). Możesz utworzyć nową instancję klas danych, jak każda inna klasa Python. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

40 50 60

Zauważ, że jeśli metoda w klasie danych zwróci wartość, możesz przypisać jej wskazówkę typu za pomocą symbolu „->”. Oto przykład:

Z danych Dataclass Import DataClass
@DataClass
Klasa Stockinhand:
Jabłka: int
pomarańcze: int
Mangoes: int
def total_stock (self) -> int:
powrót do siebie.jabłka + ja.pomarańcze + jaźń.Mango
Stock = StockInhand (40, 50, 60)
Drukuj (zapas.total_stock ())

Utworzono nową metodę o nazwie „Total_stock” i przypisano do niego wskazówkę typu za pomocą „int” zarezerwowane. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

150

Zmienne w obiektach danych danych mogą mieć wartości domyślne

Możesz przypisać wartości domyślne do członków klas danych po wskazówkach typu. Oto przykład:

Z danych Dataclass Import DataClass
@DataClass
Klasa Stockinhand:
jabłka: int = 40
pomarańcze: int = 50
Mangoes: int = 60
def total_stock (self) -> int:
powrót do siebie.jabłka + ja.pomarańcze + jaźń.Mango
Stock = StockInHand ()
Drukuj (zapas.total_stock ())

W drugim ostatnim stwierdzeniu nie dostarczono żadnych argumentów podczas tworzenia nowej instancji StockInhand Dataclass, więc użyto wartości domyślnych. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

150

Członkowie danych DataClass są zmienne

Klasy danych są zmienne, więc możesz zmienić wartość jej członków, otrzymując odniesienie do nich. Poniżej znajduje się próbka kodu:

Z danych Dataclass Import DataClass
@DataClass
Klasa Stockinhand:
jabłka: int = 40
pomarańcze: int = 50
Mangoes: int = 60
def total_stock (self) -> int:
powrót do siebie.jabłka + ja.pomarańcze + jaźń.Mango
Stock = StockInHand ()
magazyn.jabłka = 100
Drukuj (zapas.total_stock ())

Wartość zmiennej jabłek została zmieniona przed wywołaniem metody total_stock. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

210

Tworzenie listy z listy

Możesz utworzyć program magazynaty za pomocą metody „Make_DataClass”, jak pokazano w poniższej próbce kodu:

Importuj klas danych
fields = [(„jabłka”, int, 40), („pomarańcze”, int, 50), („mangoes”, int, 60)]
StockInHand = DataClasses.Make_DataClass (
„Stockinhand”, pola,
przestrzeń nazw = 'total_stock': lambda self: self self.jabłka + ja.pomarańcze + jaźń.Mango
)
Stock = StockInHand ()
magazyn.jabłka = 100
Drukuj (zapas.total_stock ())

Metoda Make_DataClass bierze nazwę klasy i listę pól członkowskich jako dwa obowiązkowe argumenty. Możesz zdefiniować członków jako listę krotek, w których każdy krotek zawiera nazwę zmiennej, jej wskazówkę typu i wartość domyślna. Definiowanie wartości domyślnej nie jest wymagane, możesz pominąć ją, aby nie przypisać wartości domyślnej. Opcjonalny argument przestrzeni nazwy przyjmuje słownik, którego można użyć do definiowania funkcji członka przy użyciu par kluczowych i funkcji Lambda. Powyższy kod jest dokładnie równoważny ręcznym zdefiniowaniu następującej klas danych:

Z danych Dataclass Import DataClass
@DataClass
Klasa Stockinhand:
jabłka: int = 40
pomarańcze: int = 50
Mangoes: int = 60
def total_stock (self):
powrót do siebie.jabłka + ja.pomarańcze + jaźń.Mango
Stock = StockInHand ()
magazyn.jabłka = 100
Drukuj (zapas.total_stock ())

Po uruchomieniu powyższych dwóch próbek kodu należy uzyskać następujące dane wyjściowe:

210

Dlaczego warto korzystać z klasowej klasy danych?

Możesz się zastanawiać, dlaczego używać klas danych, jeśli są prawie takie same jak inne klasy Pythona? Jedną z głównych zalet korzystania z klas danych jest jego zwięzłość. Możesz tworzyć klas danych przy użyciu czystych i minimalnych stenografii bez większego kodu płyty kotłowej. Są one specjalnie zaprojektowane do użycia jako kontenery danych, w których zmienne można łatwo uzyskać za pomocą zapisu kropki, chociaż można również użyć klas danych jako pełnoprawnych klas. Mówiąc prosto, jeśli chcesz użyć klasy Python, aby użyć jej jako magazynu danych, klasę danych wydaje się lepszym wyborem.

Wniosek

Klasy danych w Python zapewniają minimalny sposób szybkiego tworzenia klas Python przez. Możesz uzyskać odniesienia do członków klas danych za pomocą notacji kropkowej i są one szczególnie przydatne, gdy szukasz słowników, takich jak pary kluczowej wartości, do których można uzyskać dostęp za pomocą zapisu kropki.