Instans vs Statisk vs Klassemetoder i Python De viktige forskjellene
Python-metoder kan ofte være forvirrende når du kommer inn i objektorientert programmering (OOP). Denne veiledningen dekker de tre hovedtyper av metoder i Python.
De 3 Typer Metoder I Python
Det finnes tre typer metoder i Python: forekomst metoder, 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 forandring.
Hvis du er ny til Python eller bare vil eksperimentere uten å måtte installere noe, så sørg for at du besøker disse online interaktive Python-skjellene. Prøv Python i nettleseren din med disse gratis online interaktive skjellene. Prøv Python i nettleseren din med disse gratis online interaktive Shells Uansett om du går gjennom disse Python-eksemplene eller vurderer grunnleggende om arrays og lister, kan du teste koden rett i nettleseren din. Her er de beste online Python tolkene vi har funnet. Les mer .
Før vi begynner: Forstå Decorator Patterns
Før du ser på forskjellene, er det viktig å forstå et mønster kjent som dekoratormønster, eller bare kalt a dekoratør.
Dekoratører høres komplekst, men det er ingenting å frykte. Dekoratører er ganske enkelt funksjoner. Du kan skrive dem selv, eller bruke de som er inkludert i biblioteker, eller Python standardbiblioteket.
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, og kan bidra til å skille logikk inn i individuelle bekymringer.
Dekoratormønsteret er Pythons foretrukne måte å definere statiske eller klassemetoder på. Her ser du hvordan Python ser ut:
klassekonfigurator Eksempel: "" Eksempel klasse "" "def __init __ (selv):" "" Eksempel Setup "" "print ('Hello, World!') @staticmethod def example_function ():" "" Denne metoden er dekorert! " "" utskrift ('Jeg er dekorert funksjon!') de = DecoratorExample () de.example_function ()
Dekoratører må umiddelbart gå foran en funksjon eller klassedeklarasjon. De starter med @ signere, og i motsetning til vanlige metoder, trenger du ikke å sette parenteser på slutten med mindre du går forbi i argumenter.
Det er mulig å kombinere flere dekoratører, skrive din egen og bruke dem i klasser også, men du trenger ikke å gjøre noe for disse eksemplene.
Instansmetoder i Python
Instansmetoder er den vanligste typen metoder i Python-klasser. Disse er såkalte fordi de kan få tilgang til unike data om forekomsten deres. Hvis du har to objekter hver opprettet fra en bilklasse, kan de hver ha forskjellige egenskaper. De kan ha forskjellige farger, motorstørrelser, seter, og så videre.
Tilgangsmetoder må ha selv- som en parameter, men du trenger ikke å sende dette i hver gang. Selv er en annen Python spesiell term. Inne i en hvilken som helst eksempelmetode kan du bruke selvtillit til å få tilgang til data eller metoder som kan ligge i klassen din. Du vil ikke kunne få tilgang til dem uten å gå gjennom selv.
Til slutt, som eksempelmetoder er de vanligste, er det ingen dekoratør som trengs. Enhver metode du oppretter, blir automatisk opprettet som en forekomstmetode, med mindre du fortelle Python ellers.
Her er et eksempel:
klassekonfigurator Eksempel: "" Eksempel klasse "" "def __init __ (selv):" "" Eksempeloppsett "" "utskrift ('Hello, World!') self.name = 'Decorator_Example' def example_function Denne metoden er en instansmetode! "" "Print ('Jeg er en instansmetode!') Print ('Mitt navn er' + selvnavn) de = DecoratorExample () de.example_function ()
De Navn variabel er tilgjengelig gjennom selv-. Legg merke til at når example_function kalles, du trenger ikke å passere deg selv. 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 trenger ikke å få tilgang til klassespesifikke data. Du trenger ikke å bruke selv-, og du trenger ikke engang å instansiere en forekomst, du kan bare ringe metoden din:
Klasse Decorator Eksempel: "" "Eksempel klasse" "" def __init __ (selv): "" "Eksempeloppsett" "" utskrift ('Hello, World!') @staticmethod def example_function (): "" "Denne metoden er en statisk metode ! "" "print ('Jeg er statisk metode!') 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 bruksfunksjoner, som utfører en oppgave i isolasjon. De trenger ikke (og kan ikke) få tilgang til klassedata. De bør være helt selvforsynte, og bare arbeide med data som er sendt inn som argumenter. Du kan bruke en statisk metode for å legge til to tall sammen, eller skrive ut en gitt streng.
Klassemetoder i Python
Klassemetoder er den tredje og endelige OOP-metoden typen å vite. Klassemetoder vet om klassen deres. De kan ikke få tilgang til bestemte forekomstdata, men de kan ringe til andre statiske metoder.
Klassemetoder trenger ikke selv- Som et argument, men de trenger en parameter som heter cLS. Dette står for klasse, og som selv, blir automatisk passert inn av Python.
Klassemetoder opprettes ved hjelp av @classmethod dekoratør.
klassekonfigurator Eksempel: "" Eksempel klasse "" "def __init __ (selv):" "" Eksempeloppsett "" "utskrift ('Hello, World!') @classmethod def example_function (cls):" "" Denne metoden er en klasse Metode! "" "print ('Jeg \' ma klasse metode! ') cls.some_other_function () @staticmethod def some_other_function (): print (' Hei! ') de = DecoratorExample () de.example_function
Klassemetoder er muligens de mer forvirrende metodetyper av de tre, men de har deres bruk. Klassemetoder kan manipulere selve klassen, noe som er nyttig når du jobber med større og mer komplekse prosjekter.
Når skal du bruke hver metodetype
Det kan virke som en tøff og skremmende beslutning å velge mellom typer metoder i Python, men du vil snart få tak i det med litt praksis.
Selv om du bare skriver små skript for moro skyld, er det en god ferdighet å lære å lære en annen OOP-funksjon i Python, og det kan bidra til å gjøre koden enklere å feilsøke og enklere å gjenbruke i fremtiden..
Oppsummert:
- Tilgangsmetoder: Den vanligste metoden typen. Kunne få tilgang til data og egenskaper som er unike for hver forekomst.
- Statiske metoder: Kan ikke få tilgang til noe annet i klassen. Helt selvstendig kode.
- Klassemetoder: Kan få tilgang til begrensede metoder i klassen. Kan endre klassespesifikke detaljer.
Hvis denne opplæringen var litt avansert, eller ikke helt hva du lette etter, hvorfor ikke ta en titt på disse kursene for å gå fra Python nybegynner til pro 5 kurs som tar deg fra Python Nybegynner til Pro 5 kurs som vil Ta deg fra Python Beginner to Pro Disse fem kursene vil lære deg alt om programmering i Python, et av de heteste språkene der ute akkurat nå. Les mer ? Disse 5 nettstedene er også gode for Python nybegynnere. Hvis du vil ha en fysisk, ekte verdensbruk av Python, men kjeder deg til Raspberry Pi, hva med vår guide til å kontrollere Arduino med Python. Slik programmerer og styrer du en Arduino med Python. Slik programmerer og styrer du en Arduino med Python. Dessverre er det Det er umulig å programmere en Arduino i Python direkte, men du kan styre den over USB ved hjelp av et Python-program. Dette er hvordan. Les mer ?
Utforsk mer om: Programmering, Python.