Forekomst vs statisk kontra klassemetode i Python: De viktige forskjellene

Forekomst vs statisk kontra klassemetode i Python: De viktige forskjellene

Python -metoder kan ofte være forvirrende når du kommer inn i objektorientert programmering (OOP). Denne guiden dekker de tre hovedmetodene i Python.





De tre metodetypene i Python

Det er tre typer metoder i Python: forekomstmetoder , statiske metoder , og klassemetoder .





Å vite forskjellene er ikke alltid nødvendig for å kode grunnleggende Python -skript, men når du går videre til OOP, kan forskjellene gjøre en stor endring.





Hvis du er ny i Python, eller bare vil eksperimentere uten å måtte installere noe, må du besøke disse online interaktive Python -skall .

Før vi begynner: Forstå dekoratormønstre

Før du ser på forskjellene, er det viktig å forstå et designmønster kjent som dekoratørmønster , eller ganske enkelt kalt a dekoratør .



Dekoratører høres komplekse ut, men det er ingenting å frykte. Dekoratorer er rett og slett funksjoner. Du kan skrive dem selv, eller bruke de som er inkludert i biblioteker, eller Python standardbibliotek.

Som enhver funksjon utfører dekoratører en oppgave. Forskjellen her er at dekoratører bruker logikk eller endrer oppførselen til andre funksjoner. De er en utmerket måte å gjenbruke kode på, og kan bidra til å skille logikk i individuelle bekymringer.





Dekoratormønsteret er Pythons foretrukne måte å definere statiske eller klassemetoder på. Slik ser en ut 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 må umiddelbart gå foran en funksjon eller klasseerklæring. De starter med @ tegn, og i motsetning til vanlige metoder, trenger du ikke sette parenteser på slutten med mindre du sender inn argumenter.





Det er mulig å kombinere flere dekoratører, skrive din egen og bruke dem på klasser også, men du trenger ikke å gjøre noe av det for disse eksemplene.

hvorfor kjører harddisken min på 100

Forekomstmetoder i Python

Forekomstmetoder er den vanligste typen metoder i Python -klasser. Disse er såkalte fordi de har tilgang til unike data fra forekomsten. Hvis du har to objekter som hver er opprettet fra en bilklasse, kan de ha forskjellige egenskaper. De kan ha forskjellige farger, motorstørrelser, seter og så videre.

Forekomstmetoder må ha selv- som en parameter, men du trenger ikke å sende dette inn hver gang. Selv er et annet Python -spesialbegrep. I en hvilken som helst instansmetode kan du bruke deg selv til å få tilgang til data eller metoder som kan være i klassen din. Du vil ikke få tilgang til dem uten å gå gjennom deg selv.

Til slutt, ettersom instansmetoder er de vanligste, er det ingen dekoratør nødvendig. Enhver metode du oppretter, blir automatisk opprettet som en forekomstmetode, med mindre du forteller Python noe annet.

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

De Navn variabelen er tilgjengelig gjennom selv- . Legg merke til det når eksempel_funksjon kalles, trenger du ikke å sende deg inn --- Python gjør dette for deg.

Statiske metoder i Python

Statiske metoder er metoder som er relatert til en klasse på en eller annen måte, men som ikke trenger å få tilgang til noen klassespesifikke data. Du trenger ikke bruke selv- , og du trenger ikke engang å instansere en forekomst, kan du ganske enkelt ringe metoden din:

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

De @staticmethod dekoratør ble brukt til å fortelle Python at denne metoden er en statisk metode.

Statiske metoder er gode for verktøyfunksjoner, som utfører en oppgave isolert. De trenger ikke (og kan ikke) få tilgang til klassedata. De skal være helt frittstående, og bare fungere med data som er sendt inn som argumenter. Du kan bruke en statisk metode for å legge sammen to tall, eller skrive ut en gitt streng.

Klassemetoder i Python

Klassemetoder er den tredje og siste OOP -metodetypen å vite. Klassemetoder vet om klassen deres. De har ikke tilgang til spesifikke forekomstdata, men de kan kalle andre statiske metoder.

Klassemetoder trenger ikke selv- som et argument, men de trenger en parameter kalt cls . Dette står for klasse , og blir som meg selv automatisk sendt inn av Python.

Klassemetoder opprettes ved hjelp av @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 muligens de mer forvirrende metodetyper av de tre, men de har sine bruksområder. Klassemetoder kan manipulere selve klassen, noe som er nyttig når du jobber med større og mer komplekse prosjekter.

Når du skal bruke hver metodetype

Det kan virke som en tøff og skremmende beslutning å velge mellom metodene i Python, men du får snart tak i det med litt øvelse.

hvordan endrer jeg min standard Google -konto i chrome

Selv om du bare skriver små skript for moro skyld, er det en god ferdighet å lære en annen OOP -funksjon i Python, og det kan bidra til å gjøre koden lettere å feilsøke og lettere å gjenbruke i fremtiden.

Oppsummert:

  1. Forekomstmetoder: Den vanligste metoden. Får tilgang til data og egenskaper som er unike for hver forekomst.
  2. Statiske metoder: Får ikke tilgang til noe annet i klassen. Helt frittstående kode.
  3. Klassemetoder: Kan få tilgang til begrensede metoder i klassen. Kan endre klassespesifikke detaljer.

Hvis denne opplæringen var litt avansert, eller ikke helt det du lette etter, hvorfor ikke ta en titt på disse kursene for å gå fra Python -nybegynner til proff? Disse 5 nettstedene er også flotte for Python -nybegynnere. Hvis du vil ha en fysisk, ekte verden bruk av Python, men kjeder deg med Raspberry Pi, hva med vår guide til kontrollere Arduino med Python ?

Dele Dele kvitring E -post Slik rengjør du Windows -PC -en ved hjelp av kommandoprompt

Hvis det er lite lagringsplass på Windows -PC -en, kan du rydde opp i søppelet med disse raske kommandoprompt -verktøyene.

Les neste
Relaterte temaer
  • Programmering
  • Programmering
  • Python
Om forfatteren Joe Coburn(136 artikler publisert)

Joe er utdannet innen informatikk fra University of Lincoln, Storbritannia. Han er en profesjonell programvareutvikler, og når han ikke flyr droner eller skriver musikk, kan han ofte bli funnet å ta bilder eller produsere videoer.

Mer fra Joe Coburn

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis ebøker og eksklusive tilbud!

Klikk her for å abonnere