Metoda klasowa vs metoda statyczna w Pythonie

Metoda klasowa vs metoda statyczna w Pythonie
Porozmawiajmy o definicji i użyciu klas i metod statycznych w Pythonie.

Metoda klasowa w Pythonie

Metoda klasy jest powiązana z samą klasą, a nie z żadnymi obiektami klasowymi. Ponadto dostępne są tylko zmienne klasowe. Zmiana wartości takiej zmiennej klasy wpływa na wszystkie obiekty klasy. Deklarujemy tę metodę jako metodę klasową, gdy używamy zmiennych klasowych podczas wdrażania techniki. Klasa jest odwoływana przez słowo kluczowe „CLS”, które jest pierwszym parametrem metody klasowej. Podczas pracy z technikami fabrycznymi używamy metod klasowych. Metody fabryczne składają się z tych, które w zależności od przypadku użycia zwracają obiekt klasowy.

Korzystając z funkcji @ClassMethod, a także funkcji ClassMethod (), musimy wyraźnie powiadomić Pythona, że ​​metoda jest rzeczywiście metodą klasową. Po zdefiniowaniu metod klasowych proces jest dość podobny do ustanowienia standardowej funkcji. Podobnie, aby uzyskać zmienne klasowe z metod klasowych, używamy słowa kluczowego „CLS” jako głównego argumentu. W rezultacie mamy kontrolę nad aktualizacją stanu klasy ze względu na metodę klasy. Chociaż możliwe jest użycie zmiennej o innej nazwie dla „CLS”, jest to zniechęcane, biorąc pod uwagę, że jaźń jest preferowaną normą w Pythonie. Metoda klasy nie może uzyskać dostępu do atrybutów instancji; Dostępuje tylko do atrybutów klasowych.

Metoda statyczna w Pythonie

Niezależne zadanie można wykonać za pomocą metody statycznej, która jest ogólną metodą użyteczności. Metody statyczne Pythona nie są dokładnie porównywalne z metodami Java, ale raczej bliżej C++. Mimo że metoda statyczna nie zawiera niejawnego parametru początkowego, takiego jak ja i „CLS”, nie może uzyskać dostępu do klasy, ale także zmiennych instancji.

Każda metoda, którą dodajemy do klasy, zostanie przekonwertowana bezpośrednio na metodę instancji. Dekorator @staticMethod i w przeciwnym razie funkcja staticMethod () musi być stosowana do wyraźnego wskazania Pythonowi, że metoda jest rzeczywiście statyczna. Jest dość podobny do konstruowania regularnej funkcji w celu ustalenia metod statycznych w klasie.

Różnica

Metoda klasy wykorzystywała dostęp, a także zmieniła stan klasy. Zmieniając wartość takiej zmiennej klasy, która wpływa na wszystkie obiekty klasy, może ona zmienić stan dowolnej klasy.

Z powodu braku dostępu do właściwości obiektów (zmiennych instancji), a także atrybutów klasowych, metody statyczne są czasami stosowane (zmienne klasowe). Dlatego mogą być rzeczywiście przydatne w niektórych sytuacjach, taka konwersja typu.

Jako metodę fabryczną wykorzystywane są metody klasowe. Metody fabryczne obejmują te, które w zależności od przypadku użycia zwracają obiekt klasy. Na przykład, przed wygenerowaniem obiektu, musisz wykonać pewne wstępne przetwarzanie na podstawie tych dostarczonych danych.

Przykład nr 1

Zobaczmy, jak użyć metody statycznej w kodzie.

Początkowo konstruujemy klasę o nazwie „klasa EMP 1” dla pracownika 1. Będziemy wykorzystywać metodę statyczną, określając próbkę „y”, a także drukuje wyniki za pomocą polecenia drukowania. Następnie nazywaliśmy teraz „emp_1.próbka () ”, funkcja statyczna, którą można również wywołać za pomocą obiektu„ emp1 = emp_1 ()."

Przykład nr 2

Podczas określenia metody klas użyj @ClassMethod Decorator lub może funkcja ClassMethod (). Aby stworzyć metodę statyczną, po prostu użyj funkcji staticMethod () lub dekoratora @staticMethod.

Ilekroć definiując metodę klasy, użyj „CLS” jako pierwszego parametru. Odnosząc się do klasy to „CLS”. Z powodu braku dostępu do zmiennych instancji, a także zmiennych klasowych metody statyczne nie mogą zaakceptować atrybutu i klasy jako parametru.

Zaczynamy od ogłoszenia klasy o nazwie „uczeń”, a także dania jej zmiennej „School_name”. Następnie stworzylibyśmy konstruktor. Zmienne instancji siebie samodzielnie.Imię i siebie.ID są zadeklarowane. Następnie wdrażamy metodę klasy, tworząc funkcję „Zmian_school ()”. Ta metoda zawiera parametry „CLS” i „Nazwa”. Dlatego stosowana jest metoda statyczna. Definiujemy metodę „Find_noteBook ()”, a następnie przekazujemy atrybut „Notebook_name”. Następnie wykorzystywane jest polecenie powrotu do uzyskania pożądanego wyniku.

Przykład nr 3

Istnieją atrybuty zarówno dla obiektów, jak i klas. Zmienne klasowe są zawarte w celach klasowych, podczas gdy zmienne instancji są częścią atrybutów obiektowych. Tylko cechy na poziomie klasy są dostępne za pomocą metod klasowych. To może rzeczywiście zmienić stan klasowy.

W tej ilustracji utworzono klasę o nazwie „Worker” ze zmienną o nazwie „Lokalizacja_nazwa”. Stworzyliśmy funkcję o nazwie init (), która ma zmienne siebie, nazwę, a także identyfikator. Ponadto, uzyskujemy dostęp do dwóch różnych zmiennych klas i zmiennych instancji, odpowiednio, za pomocą metody show () i funkcji druku () dwa razy. Pierwsze polecenie drukowania składa się z „robotnika”, „jaźń.Imię i „jaźń.id ”jako parametry. Podobnie, drugie polecenie drukowania zawiera „lokalizacja”, „self.LOKATION_NAME ”jako argumenty. Następnie, uzyskując dostęp wyłącznie do zmiennych klas, nazywaliśmy metodę klasy, a także zdefiniowaliśmy funkcję zmian_lokalizację (). Funkcja print () byłaby zastosowana jeszcze dwa razy metodą klasy, a także jej parametrem „CLS”. Metoda statyczna zostanie skonstruowana. W ramach tej metodologii definiuje się funkcję Find_Toolbox (). Polecenie „zwrot” jest zatrudnione. Wykonując te działania, stworzyliśmy obiekt „ANI” i wywołaliśmy odpowiednią metodę show ().

Przykład nr 4

Metody statyczne i klasowe są powiązane z tą samą klasą. Stąd nazwa klasy powinna być wykorzystana do dostępu.

W tym przykładzie tworzymy klasę „gracz”, a także definiujemy metodę init (), która ma dwie zmienne Self i Team_no. Metoda klasowa i metoda statyczna zostanie skonstruowana. W ramach metody klasy definiujemy funkcję zmiany_city (), która ma dwa argumenty. Funkcja Find_Accessories () zostanie zdefiniowana w metodzie statycznej. Ta funkcja ma tylko jeden argument. Następnie, zgodnie z instrukcjami, dwukrotnie nazywaliśmy funkcję print (), aby pokazać metody statyczne i klasowe. Po utworzeniu obiektu o nazwie „Hammad” indywidualnie połączyliśmy klasę, a także metody statyczne.

Wniosek

W tym przewodniku mówiliśmy o klasie, a także o metodach statycznych w Pythonie, w tym o tym, jak są zdefiniowane i jak je tworzyć. Aby pomóc Ci zrozumieć, co dzieje się w przykładach, a także jak należy korzystać z tych funkcji podczas ich podróży kodowania. W każdym z tych instancji stosowane są metody klasowe, a także metody statyczne w Pythonie, wraz z metodami instancji w stosownych przypadkach.