Instans vs Statisk vs Klassmetoder i Python De viktiga skillnaderna

Instans vs Statisk vs Klassmetoder i Python De viktiga skillnaderna / Programmering

Pythonmetoder kan ofta vara förvirrande när du kommer in i objektorienterad programmering (OOP). Denna guide omfattar de tre huvudtyperna av metoder i Python.

De 3 typerna av metoder i Python

Det finns tre typer av metoder i Python: exempel metoder, statiska metoder, och klassmetoder.

Att veta skillnaderna är inte alltid nödvändigt för att koda grundläggande Python-skript, men när du går vidare till OOP kan skillnaderna göra en stor förändring.

Om du är ny på Python eller bara vill experimentera utan att behöva installera någonting, var noga med att du besöker dessa online interaktiva Python-skal. Försök Python i din webbläsare Med dessa gratis online interaktiva skalen Prova Python i din webbläsare med dessa gratis online interaktiva Skal Oavsett om du går igenom dessa Python-exempel eller granskar grunderna i arrays och listor kan du testa koden direkt i din webbläsare. Här är de bästa Python tolkarna vi hittat. Läs mer .

Innan vi börjar: Förstå dekoratormönster

Innan man tittar på skillnaderna är det viktigt att förstå ett designmönster som kallas dekoratormönster, eller helt enkelt kallad a dekoratör.

Dekoratörer låter komplexa, men det finns inget att frukta. Dekoratörer är helt enkelt funktioner. Du kan skriva dem själv, eller använda dem som ingår i bibliotek eller Python-standardbiblioteket.

Som alla funktioner utför dekoratörer en uppgift. Skillnaden här är att dekoratörer tillämpar logik eller förändrar beteendet hos andra funktioner. De är ett utmärkt sätt att återanvända kod, och kan hjälpa till att skilja logiken från individuella problem.

Dekoreringsmönstret är Pythons föredragna sätt att definiera statiska eller klassmetoder. Här ser du ut som Python:

klassen DecoratorExample: "" "Exempel klass" "" def __init __ (self): "" "Exempel Setup" "" print ('Hello, World!') @staticmethod def example_function (): "" "Denna metod är dekorerad!" "" utskrift ('I \' ma dekorerad funktion! ') de = DecoratorExample () de.example_function ()

Decorators måste omedelbart gå före en funktion eller klassdeklaration. De börjar med @ tecken och i motsats till normala metoder behöver du inte sätta parenteser i slutet om du inte går igenom argument.

Det är möjligt att kombinera flera dekoratörer, skriva egna och tillämpa dem på klasser också, men du behöver inte göra något av det för dessa exempel.

Instansmetoder i Python

Instansmetoder är den vanligaste typen av metoder i Python-klasserna. Dessa är så kallade eftersom de kan få tillgång till unika uppgifter om deras förekomst. Om du har två objekt som var och en skapad från en bilklass, kan de var och en ha olika egenskaper. De kan ha olika färger, motorstorlekar, platser, och så vidare.

Instansmetoder måste ha själv som en parameter, men du behöver inte överföra detta varje gång. Själv är en annan Python special term. Inom varje instansmetod kan du använda dig själv för att få tillgång till data eller metoder som kan finnas i din klass. Du kommer inte få tillgång till dem utan att gå igenom själv.

Slutligen, som exempel metoder är de vanligaste, det behövs ingen dekoratör. Vilken metod du skapar skapas automatiskt som en instansmetod, om du inte annars säger till Python.

Här är ett exempel:

klassen DecoratorExample: "" "Exempel klass" "" def __init __ (self): "" "Exempel Setup" "" print ('Hej, Värld!') self.name = 'Decorator_Example' def example_function Denna metod är en förekomstmetod! "" "Print ('Jag är en instansmetod!') Print ('Jag heter' + self.name) de = DecoratorExample () de.example_function ()

De namn variabel nås genom själv. Observera att när example_function kallas, du behöver inte passera själv in-Python gör det här för dig.

Statiska metoder i Python

Statiska metoder är metoder som är relaterade till en klass på något sätt, men behöver inte komma åt några klassspecifika uppgifter. Du behöver inte använda själv, och du behöver inte ens inställa en instans, du kan helt enkelt ringa din metod:

klass "" "" "" Exemplar klass "" "def __init __ (self):" "" Exempel Inställning "" "print ('Hello, World!') @staticmethod def example_function ():" "" Denna metod är en statisk metod ! "" "print ('Jag \' ma statisk metod! ') de = DecoratorExample.example_function ()

De @staticmethod dekoratorn brukade berätta för Python att denna metod är en statisk metod.

Statiska metoder är bra för verktygsfunktioner, som utför en uppgift i isolation. De behöver inte (och kan inte) få tillgång till klassdata. De borde vara helt självständiga och bara arbeta med data som skickas in som argument. Du kan använda en statisk metod för att lägga till två nummer tillsammans, eller skriva ut en viss sträng.

Klassmetoder i Python

Klassmetoder är den tredje och sista OOP-metoden för att känna till. Klassmetoder känner till sin klass. De kan inte få tillgång till specifika exempeldata, men de kan ringa andra statiska metoder.

Klassmetoder behöver inte själv som ett argument, men de behöver en parameter som heter cls. Detta står för klass, och som själv, skickas automatiskt in av Python.

Klassmetoder skapas med hjälp av @classmethod dekoratör.

klassen DecoratorExample: "" "Exempel klass" "" def __init __ (self): "" "Exempel Setup" "" print ('Hello, World!') @classmetod def example_function (cls): "" "Denna metod är en klass metod! "" "print ('I \' ma class method! ') cls.some_other_function () @staticmethod def some_other_function (): print (' Hej! ') de = DecoratorExample () de.example_function

Klassmetoder är möjligen de mer förvirrande metoden typer av de tre, men de har sina användningsområden. Klassmetoder kan manipulera själva klassen, vilket är användbart när du arbetar med större och mer komplexa projekt.

När ska man använda varje metodtyp

Det kan tyckas som ett tufft och skrämmande beslut att välja mellan typerna av metoder i Python, men du kommer snart att hänga på det med lite träning.

Även om du bara skriver små skript för skojs skull, kan du lära dig en annan OOP-funktion i Python, och det kan hjälpa dig att göra din kod enklare att felsöka och lättare att återanvända i framtiden..

Sammanfattningsvis:

  1. Instansmetoder: Den vanligaste metoden typ. Kunna få tillgång till data och egenskaper som är unika för varje instans.
  2. Statiska metoder: Kan inte komma åt något annat i klassen. Helt självständig kod.
  3. Klassmetoder: Har tillgång till begränsade metoder i klassen. Kan ändra klassspecifika detaljer.

Om denna handledning var lite avancerad, eller inte riktigt vad du letade efter, varför inte ta en titt på dessa kurser för att gå från Python nybörjare till pro 5 kurser som tar dig från Python Nybörjare till Pro 5 kurser som ska Ta dig från Python Nybörjare till Pro Dessa fem kurser kommer att lära dig allt om programmering i Python, ett av de hetaste språken där ute just nu. Läs mer ? Dessa 5 webbplatser är också bra för Python nybörjare. Om du vill ha en fysisk, verklig världsanvändning av Python, men är uttråkad av Raspberry Pi, hur är vår guide till att styra Arduino med Python Hur man programmerar och kontrollerar en Arduino med Python Hur man programmerar och styr en Arduino med Python Det är tyvärr det Det är omöjligt att direkt programmera en Arduino i Python, men du kan styra den över USB med ett Python-program. Här är hur. Läs mer ?

Utforska mer om: Programmering, Python.