Home
» Power BI
»
Hvad er selv i Python: Eksempler fra den virkelige verden
Hvad er selv i Python: Eksempler fra den virkelige verden
Når du skriver klasser i Python, kan du ofte støde på udtrykket 'self.'Det er et afgørende koncept, som begyndere skal forstå, når de dykker dybere ned i objektorienterede funktioner i Python-programmeringssproget.
Parameteren selfrefererer til den aktuelle forekomst af en klasse. Du kan bruge det til at få adgang til de attributter og metoder, der hører til den pågældende klasse.
I denne Python-tutorial vil vi undersøge, hvordan selfvariablen spiller en central rolle i Python-klasser. Vi viser dig også, hvordan du opretholder kodeklarhed, modularitet og genbrugelighed ved at bruge self.
Python er et objektorienteret programmeringssprog (OOP) , der er stærkt afhængig af klasser og objekter. Så før vi dykker ned i selfparameteren, skal vi først forstå, hvad objektorienteret programmering er.
Objektorienteret programmering hjælper programmører med at modellere virkelige begreber og relationer gennem brug af klasser og objekter. Dette resulterer i kode, der er mere struktureret, genbrugelig og skalerbar.
Tænk på en klasse som en skabelon til at skabe objekter med foruddefinerede egenskaber og metoder. Et objekt er også en forekomst af en klasse, der gemmer sine egne værdier for attributterne og har adgang til klassefunktioner.
Disse to koncepter er en vigtig byggesten i mange applikationer. Du kan se både klasser og objekter i arbejde i denne video om, hvordan du nemt opretter data med Python Faker Library.
Python-selvets rolle
Selfer en reference til forekomsten af klassen i Python. Det giver dig mulighed for at få adgang til og ændre attributterne og metoderne for en klasse inden for dens eget omfang.
Her er et par nøglepunkter om brugen af selfi Python:
Selfer ikke et reserveret nøgleord i Python-syntaksen . Du kan bruge andre navne til at identificere klasseforekomster, men selfer den mest udbredte og accepterede konvention af Python-programmører.
Selfbruges som den første parameter i instansmetoder til at referere til den aktuelle instans af klassen.
Du kan bruge selftil at skelne mellem instansattributter og lokale variabler, hvilket gør din kode mere læsbar og mindre buggy.
Når du kalder en instansmetode, sender Python automatisk instansen som den første parameter.
Du skal deklarere selfparameteren i __init__()konstruktøren og alle andre efterfølgende funktionskonstruktører i din klasse. Hvis du ikke gør det, vil dit program kaste en typeerror.
Du kan se et eksempel på denne fejl nedenfor:
class Person: def __init__(self): print('welcome') def show_person(): print('I love pandas.') a = Person() b = a.show_person() Traceback (most recent call last): File "person.py", line 10, in trill = b.show_person() ^^^^^^^^^^^^^^^^^^ TypeError: Person.show_person() takes 0 positional arguments but 1 was given
Bemærk: Du kan komme rundt med selfparameteren i funktioner ved at bruge den statiske metodefunktion, som Python 3 giver. Det kommer vi nærmere ind på i et senere afsnit.
At arbejde med sig selv
At lære at bruge selfer meget vigtigt for at bygge klasser i Python. Igennem dette afsnit lærer du, hvordan du bruger selfi forskellige scenarier, når du arbejder med klasser og objekter.
Initialisering af objekter med '__init__()'
Når du opretter en ny instans af en klasse, __init__()kaldes metoden for at initialisere objektets attributter. Metoden __init__()er klassekonstruktøren, og den tager parameteren self som sit første argument.
Parameteren selfbruges i denne metode til at knytte instansattributterne til de givne argumenter.
Her er et eksempel:
class Person: def __init__(self, name, age): self.name = name self.age = age person1 = Person("Alice", 30)
I dette eksempel tager metoden , , og som parametre under objektets initialisering. Parameteren refererer til klasseinstansen, hvilket giver dig mulighed for at indstille og attributter for det specifikke objekt, der oprettes.init selfnameageselfnameage
Brug af sig selv i metoder
Når du definerer instansmetoder i en klasse, skal du inkludere selfsom den første parameter. Dette giver dig adgang til instansattributterne og andre metoder i klassen.
Lad os udvide det forrige eksempel:
class Person: def __init__(self, name, age): self.name = name self.age = age def introduce(self): print("Hello, my name is " + self.name + " and I'm " + str(self.age) + " years old.") person1 = Person("Alice", 30) person1.introduce()
I dette eksempel introduce()inkluderer metoden selfsom dens første parameter. Dette giver dig mulighed for at få adgang til objektets navn og aldersattributter og oprette en personlig introduktion.
Når du kalder metoden i din kode, behøver du ikke at videregive parameteren selfeksplicit. Python tager sig af det automatisk.
Ved at følge disse retningslinjer og forstå formålet med selfi kan begyndere effektivt arbejde med klasser og objekter. Dette lader dem skabe velstruktureret kode, der er let at læse og vedligeholde.
Almindelige tilfælde af selvbrug
Der er mange måder, du kan bruge nøgleordet i din Python-kode. Ved at forstå disse use cases, vil du være i stand til at udnytte effektivt i dine programmer.self self
Lad os se på nogle af dem:
Adgang til klasseattributter
En primær anvendelse af selfer at få adgang til instansattributter inden for en klasse. Forekomstattributter er specifikke for et objekt oprettet fra klassen og gemmer objektets data.
Brug selflader dig manipulere eller få adgang til disse attributter inden for klassemetoder. Lad os se på et eksempel:
class Dog: def __init__(self, name, age): self.name = name self.age = age def display_name(self): print("The dog's name is:", self.name)
I dette eksempel brugte vi self til at få adgang til navneattributten for et Dog-objekt i metoden display_name.
Opkaldsklassemetoder
Et andet almindeligt anvendelsestilfælde selfer at kalde andre klassemetoder inde fra en instansmetode. Dette giver dig mulighed for at genbruge kode, reducere kompleksiteten og forbedre læsbarheden.
Det er vigtigt at bruge, selfnår der henvises til andre metoder, da det sikrer, at den korrekte metode kaldes for den specifikke instans. Overvej følgende eksempel:
class Bird: def __init__(self, species, color): self.species = species self.color = color def show_species(self): print("The bird species is:", self.species) def show_info(self): self.show_species() print("The bird color is:", self.color)
I eksemplet ovenfor bruger vi selftil at kalde show_speciesmetoden inde fra show_infometoden. Dette gør os i stand til at vise fuglens art og farve i et enkelt kald.
Husk endelig at bruge, selfnår du får adgang til instansattributter og kalder klassemetoder. Når du forstår disse use cases, vil du være i stand til at skrive mere effektiv og organiseret Python-kode.
Bedste selvpraksis
Når du arbejder med, self,er der nogle konventioner, du skal følge for at undgå problemer og fejl i din kode. Her er nogle af dem.
Hvor man kan bruge selv
Når du definerer instansmetoder, skal du altid bruge selfparameteren som den første parameter. Dette giver dig mulighed for at få adgang til og ændre objektets instansattributter og kalde andre instansmetoder i klassen.
Det er vigtigt at bruge, selfnår du arbejder med objektforekomster i Python. Brug af det sikrer ensartet adfærd og giver mulighed for korrekt objektindkapsling.
Overvej for eksempel følgende klasse:
class MyClass: def __init__(self, my_var): self.my_var = my_var
Her bruges selv-parameteren i __init__metoden til at initialisere my_varobjektforekomstens attribut. På denne måde bliver en instansspecifik attribut.my_var
Som et resultat kan den tilgås og ændres ved hjælp af selvreferencen i andre metoder i klassen.
Navnekonventioner for sig selv
Selvom selfdet er det konventionelle navn, der bruges til forekomsten i Python, kan du teknisk set bruge et hvilket som helst navn, du kan lide. Det anbefales dog stærkt, at du holder dig til at bruge dig selv for klarhed og sammenhæng med det bredere Python-fællesskab.
Brug af et andet navn kan forårsage forvirring for dem, der læser og arbejder med din kode, især hvis de er vant til standardnavnekonventioner i Python-biblioteker.
Hvor man ikke skal bruge selv
Vi ved allerede, at selfparameteren giver adgang til objektforekomsten. Men i nogle tilfælde kræver nogle funktioner i klassen muligvis ikke adgang til objektforekomsten.
I dette scenarie er selvparameteren ikke nødvendig. Så Python giver en statisk metodefunktion til at omgå selvparameteren:
Her er et eksempel:
class Car: @staticmethod def print_car(): print('Vroom Vroom')
I eksemplet ovenfor @staticmethodtilsidesætter funktionsdekoratoren parameterkravet selfi metoden. På denne måde vil funktionen stadig køre, selvom der ikke er nogen objektforekomst sendt ind i den.
Konklusion
Sammenfattende refererer selvparameteren i Python til forekomsten af en klasse og giver dig adgang til dens attributter og metoder. Som Python-udvikler er det vigtigt at forstå formålet med sig selv og dets brug i klasser og objekter.
Ved at bruge self konsekvent i din kode, fremmer du læsbarhed og vedligeholdelse, hvilket forbedrer den overordnede kvalitet af dit arbejde.
Husk også, at selvom du måske ser udtrykket "self"brugt ofte i Python, er det ikke et reserveret Python-søgeord. Dette adskiller sig fra programmeringssprog som Javascript og Java , hvor "this" er et reserveret nøgleord.
Du kan navngive den første parameter i en klassemetode, hvad du vil; " self" er bare den foretrukne konvention.
Er selv et nøgleord i Python?
Der er et spørgsmål, der altid svæver blandt Python-programmører. Er selv virkelig et nøgleord i Python?
I modsætning til andre programmeringssprog som C++, hvor selv anses for at være et nøgleord, er det i Python en konvention, som programmører har en tendens til at følge. Det er dybest set en parameter i en metodedefinition. Du kan dog bruge et hvilket som helst andet navn i stedet for dig selv som et andet eller mig eller noget andet for den første parameter i en metode. En anden grund til, at det foreslås af de fleste mennesker, er, at det forbedrer læsbarheden af din kode.
Lad os se et eksempel for at forstå det:
class myClass: def show(other): print(“en anden bruges i stedet for sig selv”)
Hvis du sammenligner denne kode med koden til Python-klassens selvkonstruktør, vil du bemærke, at vi her har brugt navnet en anden i sted for selv. Lad os nu oprette et objekt af denne klasse og se outputtet:
object = myClass() object.show()
Du kan se, at programmet virker, selvom vi bruger et andet navn i stedet for selvvariablen. Det fungerer nøjagtigt på samme måde som selvvariablen gør.