
Mark Lucas
0
2656
618
Python-metoder kan ofte være forvirrende, når du 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: forekomstmetoder, statiske metoder, og klassemetoder.
At kende forskellene er ikke altid påkrævet for at kode grundlæggende Python-scripts, men når du først går videre til OOP, kan forskellene gøre en stor ændring.
Hvis du er ny med Python, eller bare vil eksperimentere uden at skulle installere noget, skal du sørge for at besøge disse online interaktive Python-skaller. Prøv Python i din browser med disse gratis online interaktive skaller Prøv Python i din browser med disse gratis online interaktive Uanset om du gennemgår disse Python-eksempler eller gennemgår det grundlæggende i arrays og lister, kan du teste koden lige i din browser. Her er de bedste online Python-tolke, vi har fundet. .
Før vi begynder: At forstå dekoratormønstre
Før man ser på forskellene, er det vigtigt at forstå et designmønster kendt som dekoratørmønster, eller blot kaldet a dekoratør.
Dekoratører lyder komplekst, men der er intet at frygte. Dekoratører er simpelthen funktioner. Du kan skrive dem selv, eller bruge dem, der er inkluderet i 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 ved andre funktioner. De er en fremragende måde at genbruge kode på og kan hjælpe med at adskille logikken i individuelle problemer.
Dekoratormønsteret er Pythons foretrukne måde at definere statiske metoder eller klassemetoder. Sådan ser du ud i Python:
klasse DecoratorExample: "" "Eksempel klasse" "" def __init __ (self): "" "Eksempelopsætning" "" print ('Hej, verden!') @staticmethod def example_function (): "" "Denne metode er dekoreret!" "" print ('Jeg er en dekoreret funktion!') de = DecoratorExample () de.example_function ()
Dekoratører skal straks gå forud for en funktion eller klassedeklaration. De starter med @ underskrive, og i modsætning til normale metoder, behøver du ikke at lægge parenteser til slut, medmindre du videregiver argumenter.
Det er muligt at kombinere flere dekoratører, skrive dine egne og anvende dem til klasser, men du behøver ikke gøre noget af det for disse eksempler.
Forekomstmetoder i Python
Forekomstmetoder 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 fra en bilklasse, kan de hver især have forskellige egenskaber. De kan have forskellige farver, motorstørrelser, sæder osv.
Forekomstmetoder skal have selv som en parameter, men du behøver ikke at videregive dette hver gang. Selv er et andet specielt udtryk for Python. I enhver forekomstmetode kan du bruge mig selv til at få adgang til alle data eller metoder, der måtte være i din klasse. Du kan ikke få adgang til dem uden at gå gennem mig selv.
Endelig, som forekomstmetoder er de mest almindelige, er der ingen dekoratorer nødvendige. Enhver metode, du opretter, oprettes automatisk som en instansmetode, medmindre du fortæller Python andet.
Her er et eksempel:
class DecoratorExample: "" "Eksempel Class" "" def __init __ (self): "" "Eksempelopsætning" "" print ('Hej, verden!') self.name = 'Decorator_Example' def example_function (self): "" " Denne metode er en forekomstmetode! "" "Print ('Jeg er en forekomstmetode!') Print ('Mit navn er' + selvnavn) de = DecoratorExample () de.example_function ()
Det navn variabel er tilgængelig gennem selv. Bemærk, at når example_function kaldes, behøver du ikke videregive selv-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 behøver ikke at få adgang til klassespecifikke data. Du behøver ikke at bruge selv, og du behøver ikke engang at instantisere en instans, du kan blot kalde din metode:
klasse DecoratorExample: "" "Eksempel Klasse" "" def __init __ (self): "" "Eksempelopsætning" "" print ('Hej, verden!') @staticmethod def example_function (): "" "Denne metode er en statisk metode ! "" "print ('Jeg er en statisk metode!') 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 fremragende til hjælpefunktioner, der udfører en opgave isoleret. De behøver ikke (og kan ikke) få adgang til klassedata. De skal være helt uafhængige og kun arbejde med data, der er indgivet som argumenter. Du kan bruge en statisk metode til at tilføje to numre sammen eller udskrive en given streng.
Klassemetoder i Python
Klassemetoder er den tredje og sidste OOP-metodetype, man kender. Klassemetoder kender deres klasse. De har ikke adgang til specifikke forekomstdata, men de kan kalde andre statiske metoder.
Klassemetoder behøver ikke selv som et argument, men de har brug for en kaldet parameter CLS. Dette står for klasse, og som selv, automatisk overgås af Python.
Klassemetoder oprettes ved hjælp af @classmethod dekoratør.
klasse DecoratorExample: "" "Eksempel klasse" "" def __init __ (self): "" "Eksempelopsætning" "" print ('Hej, verden!') @classmethod def example_function (cls): "" "Denne metode er en klasse metode! "" "print ('Jeg er klassemetode!') 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, mere komplekse projekter.
Hvornår skal man bruge hver metodetype
Det kan virke som en hård og skræmmende beslutning at vælge mellem metodetyper i Python, men du får snart fat på det med lidt øvelse.
Selv hvis du kun skriver små scripts for sjov, er det en stor færdighed at kende en anden OOP-funktion i Python at hjælpe med at gøre din kode lettere at fejlfinde og lettere at genbruge i fremtiden.
Sammenfattende:
- Forekomstmetoder: Den mest almindelige metodetype. I stand til at få adgang til data og egenskaber, der er unikke for hver enkelt instans.
- Statiske metoder: Kan ikke få adgang til noget andet i klassen. Helt selvstændig kode.
- Klassemetoder: Har adgang til begrænsede metoder i klassen. Kan ændre klassespecifikke detaljer.
Hvis denne tutorial var en smule avanceret eller ikke helt, hvad du ledte efter, så hvorfor ikke tage et kig på disse kurser for at gå fra Python begynder til pro 5 Kurser, der vil tage dig fra Python Begynder til Pro 5 Kurser, der vil Tag dig fra Python Beginner til Pro Disse fem kurser lærer dig alt om programmering i Python, et af de hotteste sprog derude lige nu. ? Disse 5 websteder er også gode til Python-begyndere. Hvis du vil have en fysisk brug af Python i den virkelige verden, men du keder dig med Raspberry Pi, hvad med vores guide til kontrol af Arduino med Python Sådan programmeres og styres en Arduino med Python Sådan programmeres og styres en Arduino med Python Desværre er det er umulig at direkte programmere en Arduino i Python, men du kan kontrollere den over USB ved hjælp af et Python-program. Sådan gør du. ?