Metody instance vs. statické vs. třídy v Pythonu: Důležité rozdíly

Metody instance vs. statické vs. třídy v Pythonu: Důležité rozdíly

Metody Pythonu mohou být často matoucí, jakmile se dostanete do objektově orientovaného programování (OOP). Tato příručka popisuje tři hlavní typy metod v Pythonu.





Tři typy metod v Pythonu

V Pythonu existují tři typy metod: instanční metody , statické metody , a třídní metody .





Znalost rozdílů není vždy nutná ke kódování základních skriptů Pythonu, ale jakmile postoupíte do OOP, rozdíly mohou znamenat velkou změnu.





Pokud jste v Pythonu nováčkem nebo jen chcete experimentovat, aniž byste museli cokoli instalovat, určitě je navštivte online interaktivní skořápky Pythonu .

Než začneme: Porozumění dekorativním vzorům

Než se podíváte na rozdíly, je důležité porozumět návrhovému vzoru známému jako vzor dekorátora nebo jednoduše nazvaný a dekoratér .



Dekoratéry zní složitě, ale není se čeho bát. Dekoratéry jsou prostě funkce. Můžete je napsat sami, nebo použít ty, které jsou součástí knihoven, nebo standardní knihovnu Pythonu.

Jako každá funkce, dekoratéři plní úkol. Rozdíl je v tom, že dekoratéři používají logiku nebo mění chování jiných funkcí. Jsou to skvělý způsob, jak znovu použít kód, a mohou pomoci rozdělit logiku na individuální starosti.





Vzor dekorátoru je preferovaný způsob definování statických nebo třídních metod v Pythonu. Jak to vypadá v Pythonu:

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()

Dekoratéři musí bezprostředně předcházet deklaraci funkce nebo třídy. Začínají s @ podepsat a na rozdíl od běžných metod nemusíte na konec uvádět závorky, pokud nepředáváte argumenty.





Je možné kombinovat více dekorátorů, psát vlastní a aplikovat je také na třídy, ale pro tyto příklady nebudete muset nic z toho dělat.

facebook Přihlaste se pomocí jiného účtu

Metody instance v Pythonu

Instance metody jsou nejběžnějším typem metod ve třídách Pythonu. Těm se říká, protože mají přístup k jedinečným datům své instance. Pokud máte dva objekty, každý vytvořený z automobilové třídy, pak každý může mít jiné vlastnosti. Mohou mít různé barvy, velikosti motoru, sedadla atd.

Instance metody musí mít jako parametr, ale nemusíte to pokaždé předávat. Self je další speciální výraz pro Python. Uvnitř jakékoli metody instance můžete použít self k přístupu k jakýmkoli datům nebo metodám, které se mohou nacházet ve vaší třídě. Bez sebe se k nim nedostanete.

Nakonec, protože metody instance jsou nejběžnější, není potřeba žádný dekorátor. Jakákoli metoda, kterou vytvoříte, bude automaticky vytvořena jako metoda instance, pokud Pythonu neřeknete jinak.

Zde je příklad:

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()

The název proměnná je přístupná přes . Všimněte si, že kdy příklad_funkce se nazývá, nemusíte se předávat--Python to dělá za vás.

Statické metody v Pythonu

Statické metody jsou metody, které nějakým způsobem souvisejí se třídou, ale nepotřebují přístup k žádným datům specifickým pro třídu. Nemusíte používat , a nepotřebujete ani instanci instance, můžete jednoduše zavolat svou metodu:

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()

The @statická metoda dekorátor byl použit k tomu, aby Pythonu řekl, že tato metoda je statická.

Statické metody jsou skvělé pro pomocné funkce, které provádějí úkol izolovaně. Nepotřebují (a nemohou) přistupovat k datům třídy. Měly by být zcela samostatné a pracovat pouze s daty předanými jako argumenty. Můžete použít statickou metodu k sečtení dvou čísel nebo vytisknout daný řetězec.

Metody třídy v Pythonu

Metody třídy jsou třetím a posledním typem metody OOP, který znáte. Metody třídy o své třídě vědí. Nemohou přistupovat k datům konkrétní instance, ale mohou volat jiné statické metody.

Metody třídy nepotřebují jako argument, ale potřebují parametr nazvaný cls . To znamená třída a stejně jako já se automaticky předává Pythonem.

Metody třídy jsou vytvořeny pomocí @classmethod dekoratér.

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 třídy jsou možná více matoucími typy metod z těchto tří, ale mají své využití. Metody třídy mohou manipulovat se samotnou třídou, což je užitečné, když pracujete na větších a složitějších projektech.

Kdy použít každý typ metody

Může se to zdát jako těžké a skličující rozhodnutí při výběru mezi typy metod v Pythonu, ale brzy si to s trochou praxe osvojíte.

kde najdu štěňata na prodej

I když píšete jen malé skripty pro zábavu, naučit se další funkci OOP v Pythonu je skvělá dovednost, kterou můžete znát, a může pomoci usnadnit odstraňování problémů s kódem a jeho opětovné použití v budoucnu.

Celkem:

  1. Metody instance: Nejběžnější typ metody. Možnost přístupu k datům a vlastnostem jedinečným pro každou instanci.
  2. Statické metody: K ničemu jinému ve třídě nemáte přístup. Zcela samostatný kód.
  3. Metody třídy: Může mít přístup k omezeným metodám ve třídě. Lze upravit podrobnosti specifické pro třídu.

Pokud byl tento tutoriál trochu pokročilý, nebo ne úplně to, co jste hledali, tak proč se nepodívat na tyto kurzy a přejít od Pythonu začátečníka po profesionála? Těchto 5 webových stránek je také skvělých pro začátečníky v Pythonu. Pokud chcete používat Python ve skutečném světě, ale nudí vás Raspberry Pi, co náš průvodce ovládání Arduina pomocí Pythonu ?

Podíl Podíl tweet E-mailem Jak vyčistit počítač se systémem Windows pomocí příkazového řádku

Pokud má váš počítač se systémem Windows nedostatek úložného prostoru, vyčistěte nevyžádanou poštu pomocí těchto rychlých nástrojů příkazového řádku.

Číst dále
Související témata
  • Programování
  • Programování
  • Krajta
O autorovi Joe Coburn(136 publikovaných článků)

Joe je absolventem informatiky na University of Lincoln, UK. Je profesionálním vývojářem softwaru, a když neletí drony nebo nepíše hudbu, často ho lze zastihnout při fotografování nebo produkci videí.

Více od Joe Coburn

Přihlaste se k odběru našeho zpravodaje

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné elektronické knihy a exkluzivní nabídky!

Kliknutím sem se přihlásíte k odběru