Forekomst kontra statiske kontra klassemetoder i Python: De vigtige forskelle

Forekomst kontra statiske kontra klassemetoder i Python: De vigtige forskelle

Python -metoder kan ofte være forvirrende, når du først kommer i objektorienteret programmering (OOP). Denne vejledning dækker de tre hovedtyper af metoder i Python.





De 3 typer metoder i Python

Der er tre typer metoder i Python: instansmetoder , statiske metoder , og klassemetoder .





At kende forskellene er ikke altid påkrævet for at kode grundlæggende Python -scripts, men når du går videre til OOP, kan forskellene foretage en stor ændring.





Hvis du er ny i Python, eller bare vil eksperimentere uden at skulle installere noget, skal du sørge for at besøge disse online interaktive Python -skaller .

Inden vi begynder: Forståelse af dekoratormønstre

Inden man ser på forskellene, er det vigtigt at forstå et designmønster kendt som dekorationsmønster , eller simpelthen kaldes a dekoratør .



Dekoratører lyder komplekse, men der er ikke noget at frygte. Dekoratører er simpelthen funktioner. Du kan skrive dem selv eller bruge dem, der er inkluderet på biblioteker eller Python -standardbiblioteket.

Som enhver funktion udfører dekoratører en opgave. Forskellen her er, at dekoratører anvender logik eller ændrer adfærden for andre funktioner. De er en glimrende måde at genbruge kode på og kan hjælpe med at adskille logik i individuelle bekymringer.





Dekoratormønsteret er Pythons foretrukne måde at definere statiske eller klassemetoder på. Sådan ser man ud i Python:

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ører skal straks gå forud for en funktion eller klasseerklæring. De starter med @ tegn, og i modsætning til normale metoder behøver du ikke at sætte parenteser på enden, medmindre du sender argumenter.





Det er muligt at kombinere flere dekoratører, skrive din egen og også anvende dem på klasser, men du behøver ikke at gøre noget af det for disse eksempler.

hvor mange mennesker kan bruge netflix på én gang

Instansmetoder i Python

Instansmetoder er den mest almindelige type metoder i Python -klasser. Disse kaldes så, fordi de kan få adgang til unikke data fra deres forekomst. Hvis du har to objekter, der hver er oprettet ud fra en bilklasse, kan de hver især have forskellige egenskaber. De kan have forskellige farver, motorstørrelser, sæder og så videre.

Instansmetoder skal have selv som parameter, men du behøver ikke at videregive dette hver gang. Selv er en anden Python -specialbetegnelse. Inde i enhver instansmetode kan du bruge dig selv til at få adgang til data eller metoder, der kan opholde sig i din klasse. Du vil ikke have adgang til dem uden at gå igennem dig selv.

Endelig, da instansmetoder er de mest almindelige, er der ingen dekoratør nødvendig. Enhver metode, du opretter, oprettes automatisk som en instansmetode, medmindre du fortæller Python andet.

Her er et eksempel:

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

Det navn variablen tilgås via selv . Bemærk det når eksempel_funktion kaldes, behøver du ikke at give dig selv i --- Python gør dette for dig.

Statiske metoder i Python

Statiske metoder er metoder, der er relateret til en klasse på en eller anden måde, men ikke behøver at få adgang til nogle klassespecifikke data. Du behøver ikke bruge selv , og du behøver ikke engang at instantiere en forekomst, kan du ganske enkelt kalde din metode:

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

Det @staticmethod dekoratør blev brugt til at fortælle Python, at denne metode er en statisk metode.

Statiske metoder er gode til hjælpefunktioner, der udfører en opgave isoleret. De behøver ikke (og kan ikke) få adgang til klassedata. De skal være fuldstændigt uafhængige og kun arbejde med data, der indsendes som argumenter. Du kan bruge en statisk metode til at tilføje to tal sammen eller udskrive en given streng.

Klassemetoder i Python

Klassemetoder er den tredje og sidste OOP -metodetype, man kender. Klassemetoder kender til deres klasse. De kan ikke få adgang til bestemte forekomstdata, men de kan kalde andre statiske metoder.

Klassemetoder behøver ikke selv som et argument, men de har brug for en parameter kaldet cls . Dette står for klasse og bliver som jeg selv automatisk sendt videre af Python.

Klassemetoder oprettes ved hjælp af @klassemetode 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()

Klassemetoder er muligvis de mere forvirrende metodetyper af de tre, men de har deres anvendelser. Klassemetoder kan manipulere selve klassen, hvilket er nyttigt, når du arbejder på større og mere komplekse projekter.

Hvornår skal hver metodetype bruges

Det kan virke som en hård og skræmmende beslutning at vælge mellem metodetyperne i Python, men du får snart styr på det med lidt øvelse.

hvorfor leverer mit budskab ikke

Selvom du kun skriver små scripts for sjov, er det en stor færdighed at lære en anden OOP -funktion i Python, og det kan være med til at gøre din kode lettere at fejlfinde og lettere at genbruge i fremtiden.

Sammenfattende:

  1. Instansmetoder: Den mest almindelige metode. Kan få adgang til data og egenskaber, der er unikke for hver instans.
  2. Statiske metoder: Kan ikke få adgang til andet i klassen. Helt selvstændig kode.
  3. Klassemetoder: Kan få adgang til begrænsede metoder i klassen. Kan ændre klassespecifikke detaljer.

Hvis denne vejledning var lidt avanceret eller ikke helt, hvad du ledte efter, hvorfor så ikke tage et kig på disse kurser for at gå fra Python -begynder til pro? Disse 5 websteder er også gode til Python -begyndere. Hvis du vil have en fysisk, ægte brug af Python, men keder dig med Raspberry Pi, hvad med vores guide til styring af Arduino med Python ?

Del Del Tweet E -mail Sådan rengøres din Windows -pc ved hjælp af kommandoprompt

Hvis din Windows -pc er ved at løbe tør for lagerplads, skal du rydde op i skrammel ved hjælp af disse hurtige kommandopromptværktøjer.

Læs Næste
Relaterede emner
  • Programmering
  • Programmering
  • Python
Om forfatteren Joe Coburn(136 artikler udgivet)

Joe er uddannet i datalogi fra University of Lincoln, UK. Han er en professionel softwareudvikler, og når han ikke flyver med droner eller skriver musik, kan han ofte findes tage fotos eller producere videoer.

Mere fra Joe Coburn

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for at få tekniske tips, anmeldelser, gratis e -bøger og eksklusive tilbud!

Klik her for at abonnere