selv i Python-klassen
Selv representerer forekomsten av klassen. Ved å bruke selvet kan vi få tilgang til attributtene og metodene til klassen i Python . Den binder attributtene med de gitte argumentene. Grunnen til at du trenger å bruke deg selv. er fordi Python ikke bruker @-syntaksen for å referere til forekomstattributter. Python bestemte seg for å gjøre metoder på en måte som gjør at forekomsten som metoden tilhører sendes automatisk, men ikke mottas automatisk: den første parameteren av metoder er forekomsten metoden kalles på.
Hva er bruken av selv i Python?
Når du arbeider med klasser i Python, refererer begrepet selv til forekomsten av klassen som brukes for øyeblikket. Det er vanlig å bruke selv som den første parameteren i instansmetoder i en klasse. Hver gang du kaller en metode for et objekt opprettet fra en klasse , sendes objektet automatisk som det første argumentet ved å bruke self-parameteren. Dette lar deg endre objektets egenskaper og utføre oppgaver som er unike for den aktuelle forekomsten.
Python3
class> mynumber:> > def> __init__(> self> , value):> > self> .value> => value> > > def> print_value(> self> ):> > print> (> self> .value)> obj1> => mynumber(> 17> )> obj1.print_value()> |
Produksjon:
17
Python Class selvkonstruktør
Når du arbeider med klasser, er det viktig å forstå at i Python er en klassekonstruktør en spesiell metode som heter __varmt__ som blir kalt når du oppretter en forekomst (objekt) av en klasse. Denne metoden brukes til å initialisere attributtene til objektet. Husk at selv-parameteren i konstruktøren refererer til forekomsten som opprettes og lar deg få tilgang til og angi dens attributter. Ved å følge disse retningslinjene kan du lage kraftige og effektive klasser i Python.
Python3
class> Subject:> > def> __init__(> self> , attr1, attr2):> > self> .attr1> => attr1> > self> .attr2> => attr2> obj> => Subject(> 'Maths'> ,> 'Science'> )> print> (obj.attr1)> print> (obj.attr2)> |
Produksjon:
Maths Science
Er selv i Python et nøkkelord?
Nei, 'selv' er ikke en søkeord i Python. S elf> er bare et parameternavn som brukes i instansmetoder for å referere til selve instansen.
På en mer tydelig måte kan du si at SELV har følgende kjennetegn-
Selv: Peker til gjeldende objekt
Selvet peker alltid på det nåværende objektet. Når du oppretter en forekomst av en klasse, lager du i hovedsak et objekt med sitt eget sett med attributter og metoder.
Python3
class> check:> > def> __init__(> self> ):> > print> (> 'Address of self = '> ,> id> (> self> ))> obj> => check()> print> (> 'Address of class object = '> ,> id> (obj))> |
Produksjon:
Address of self = 140273244381008 Address of class object = 140273244381008
Eksempel: Opprette klasse med attributter og metoder
Denne koden definerer en Python-klasse car> som representerer biler med attributtene 'modell' og 'farge'. De __init__> konstruktør initialiserer disse attributtene for hver forekomst. De show> metoden viser modell og farge, mens direkte attributttilgang og metodekall demonstrerer forekomstspesifikk datainnhenting.
Python3
class> car():> > > # init method or constructor> > def> __init__(> self> , model, color):> > self> .model> => model> > self> .color> => color> > > def> show(> self> ):> > print> (> 'Model is'> ,> self> .model )> > print> (> 'color is'> ,> self> .color )> > # both objects have different self which contain their attributes> audi> => car(> 'audi a4'> ,> 'blue'> )> ferrari> => car(> 'ferrari 488'> ,> 'green'> )> audi.show()> # same output as car.show(audi)> ferrari.show()> # same output as car.show(ferrari)> print> (> 'Model for audi is '> ,audi.model)> print> (> 'Colour for ferrari is '> ,ferrari.color)> |
Produksjon:
Model is audi a4 color is blue Model is ferrari 488 color is green Model for audi is audi a4 Colour for ferrari is green
Selv i konstruktører og metoder
Selvet er det første argumentet som sendes inn Konstruktør og Instance Method.Self må oppgis som en First-parameter til Instance-metoden og konstruktøren. Hvis du ikke oppgir det, vil det føre til en feil.
Python3
# Self is always required as the first argument> class> check:> > def> __init__():> > print> (> 'This is Constructor'> )> object> => check()> print> (> 'Worked fine'> )> # Following Error is produced if Self is not passed as an argument> Traceback (most recent call last):> > File> '/home/c736b5fad311dd1eb3cd2e280260e7dd.py'> , line> 6> ,> in> > > object> => check()> TypeError: __init__() takes> 0> positional arguments but> 1> was given> |
Selv: konvensjon, ikke nøkkelord
Selvet er en konvensjon og ikke en Python nøkkelord . Self er en parameter i Instance Method og brukeren kan bruke et annet parameternavn i stedet for det. Men det er tilrådelig å bruke self fordi det øker lesbarheten til kode, og det er også en god programmeringspraksis.
Python3
class> this_is_class:> > def> __init__(in_place_of_self):> > print> (> 'we have used another '> > 'parameter name in place of self'> )> > object> => this_is_class()> |
Produksjon:
we have used another parameter name in place of self