Metody instancji a metody statyczne a metody klasowe w Pythonie: ważne różnice

Metody instancji a metody statyczne a metody klasowe w Pythonie: ważne różnice

Metody Pythona często mogą być mylące, gdy przejdziesz do programowania obiektowego (OOP). Ten przewodnik opisuje trzy główne typy metod w Pythonie.





Trzy rodzaje metod w Pythonie

W Pythonie istnieją trzy rodzaje metod: metody instancji , metody statyczne , oraz metody klasy .





Znajomość różnic nie zawsze jest wymagana do kodowania podstawowych skryptów Pythona, ale gdy przejdziesz do programowania OOP, różnice mogą spowodować duże zmiany.





Jeśli jesteś nowy w Pythonie lub po prostu chcesz poeksperymentować bez konieczności instalowania czegokolwiek, odwiedź te strony interaktywne powłoki Pythona online .

Zanim zaczniemy: Zrozumienie wzorów dekoratorów

Zanim przyjrzymy się różnicom, ważne jest, aby zrozumieć wzorzec projektowy znany jako dekorator wzór lub po prostu nazywa się a dekorator .



Dekoratorzy brzmią skomplikowanie, ale nie ma się czego obawiać. Dekoratory to po prostu funkcje. Możesz je napisać samodzielnie lub użyć tych zawartych w bibliotekach lub standardowej bibliotece Pythona.

Jak każda funkcja, dekoratorzy wykonują zadanie. Różnica polega na tym, że dekoratorzy stosują logikę lub zmieniają zachowanie innych funkcji. Są doskonałym sposobem na ponowne wykorzystanie kodu i mogą pomóc w rozdzieleniu logiki na poszczególne problemy.





Wzorzec dekoratora jest preferowanym przez Pythona sposobem definiowania metod statycznych lub klasowych. Oto jak wygląda w Pythonie:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is decorated! '''
print('I'm a decorated function!')

de = DecoratorExample()
de.example_function()

Dekoratory muszą bezpośrednio poprzedzać deklarację funkcji lub klasy. Zaczynają od @ znak i w przeciwieństwie do normalnych metod, nie musisz umieszczać nawiasów na końcu, chyba że przekazujesz argumenty.





Możliwe jest łączenie wielu dekoratorów, pisanie własnych i stosowanie ich również do klas, ale nie trzeba tego robić w tych przykładach.

nie można wykonać żądania z powodu błędu programu

Metody instancji w Pythonie

Metody instancji są najczęstszym typem metod w klasach Pythona. Są to tak zwane, ponieważ mają dostęp do unikalnych danych swojej instancji. Jeśli masz dwa obiekty, z których każdy został utworzony z klasy samochodu, to każdy z nich może mieć różne właściwości. Mogą mieć różne kolory, rozmiary silników, siedzenia i tak dalej.

Metody instancji muszą mieć samego siebie jako parametr, ale nie musisz go przekazywać za każdym razem. Self to kolejny specjalny termin Pythona. Wewnątrz dowolnej metody instancji możesz użyć self, aby uzyskać dostęp do dowolnych danych lub metod, które mogą znajdować się w Twojej klasie. Nie będziesz w stanie uzyskać do nich dostępu bez przechodzenia przez siebie.

Wreszcie, ponieważ metody instancji są najbardziej powszechne, nie jest potrzebny dekorator. Każda utworzona metoda zostanie automatycznie utworzona jako metoda instancji, chyba że powiesz Pythonowi inaczej.

Oto przykład:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
self.name = 'Decorator_Example'
def example_function(self):
''' This method is an instance method! '''
print('I'm an instance method!')
print('My name is ' + self.name)

de = DecoratorExample()
de.example_function()

ten Nazwa dostęp do zmiennej jest możliwy przez samego siebie . Zauważ, że kiedy przykład_funkcji nazywa się, nie musisz podawać siebie – Python robi to za ciebie.

Metody statyczne w Pythonie

Metody statyczne to metody, które są w pewien sposób powiązane z klasą, ale nie wymagają dostępu do żadnych danych specyficznych dla klasy. Nie musisz używać samego siebie , a nawet nie musisz tworzyć instancji, możesz po prostu wywołać swoją metodę:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is a static method! '''
print('I'm a static method!')

de = DecoratorExample.example_function()

ten @metoda statyczna dekorator został użyty do poinformowania Pythona, że ​​ta metoda jest metodą statyczną.

Metody statyczne doskonale nadają się do funkcji użytkowych, które wykonują zadanie w izolacji. Nie muszą (i nie mogą) uzyskiwać dostępu do danych klas. Powinny być całkowicie samowystarczalne i działać tylko z danymi przekazanymi jako argumenty. Możesz użyć metody statycznej, aby dodać dwie liczby razem lub wydrukować dany ciąg.

Metody klas w Pythonie

Metody klas to trzeci i ostatni typ metody OOP, który należy znać. Metody klasowe wiedzą o swojej klasie. Nie mogą uzyskać dostępu do określonych danych instancji, ale mogą wywoływać inne metody statyczne.

Metody klas nie są potrzebne samego siebie jako argument, ale potrzebują parametru o nazwie cls . To oznacza klasa , i podobnie jak self, jest automatycznie przekazywany przez Pythona.

Metody klas są tworzone za pomocą @metodaklasy dekorator.

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@classmethod
def example_function(cls):
''' This method is a class method! '''
print('I'm a class method!')
cls.some_other_function()
@staticmethod
def some_other_function():
print('Hello!')

de = DecoratorExample()
de.example_function()

Metody klasowe są prawdopodobnie najbardziej zagmatwanymi typami metod z tych trzech, ale mają swoje zastosowania. Metody klasy mogą manipulować samą klasą, co jest przydatne podczas pracy nad większymi, bardziej złożonymi projektami.

Kiedy stosować każdy rodzaj metody

Wybór pomiędzy typami metod w Pythonie może wydawać się trudną i zniechęcającą decyzją, ale wkrótce nauczysz się tego po odrobinie praktyki.

jak przeglądać stare wiadomości tekstowe

Nawet jeśli piszesz tylko małe skrypty dla zabawy, poznanie innej funkcji OOP w Pythonie jest świetną umiejętnością i może pomóc w rozwiązywaniu problemów z kodem i łatwiejszym ponownym użyciu w przyszłości.

W podsumowaniu:

  1. Metody instancji: Najpopularniejszy typ metody. Możliwość dostępu do danych i właściwości unikalnych dla każdej instancji.
  2. Metody statyczne: Nie ma dostępu do niczego innego w klasie. Całkowicie samodzielny kod.
  3. Metody klas: Może uzyskać dostęp do ograniczonych metod w klasie. Może modyfikować szczegóły specyficzne dla klasy.

Jeśli ten samouczek był nieco zaawansowany lub nie do końca to, czego szukałeś, to dlaczego nie rzucić okiem na te kursy, aby przejść od początkującego do profesjonalnego Pythona? Tych 5 stron internetowych jest również świetnych dla początkujących Pythona. Jeśli chcesz korzystać z Pythona w prawdziwym świecie, ale jesteś znudzony Raspberry Pi, co powiesz na nasz przewodnik? sterowanie Arduino za pomocą Pythona ?

Udział Udział Ćwierkać E-mail Jak wyczyścić komputer z systemem Windows za pomocą wiersza polecenia

Jeśli na komputerze z systemem Windows zaczyna brakować miejsca, usuń śmieci, korzystając z tych szybkich narzędzi wiersza polecenia.

Czytaj dalej
Powiązane tematy
  • Programowanie
  • Programowanie
  • Pyton
O autorze Joe Coburn(136 opublikowanych artykułów)

Joe jest absolwentem informatyki na Uniwersytecie w Lincoln w Wielkiej Brytanii. Jest profesjonalnym programistą, a kiedy nie lata dronami ani nie pisze muzyki, często można go spotkać wykonującego zdjęcia lub produkującego filmy.

Więcej od Joe Coburna

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować