selv i Python-klassen

Selv repræsenterer klassens forekomst. Ved at bruge selvet kan vi få adgang til klassens attributter og metoder i Python . Det binder attributterne med de givne argumenter. Grunden til at du skal bruge dig selv. er fordi Python ikke bruger @-syntaksen til at henvise til instansattributter. Python besluttede at lave metoder på en måde, der gør, at den instans, som metoden tilhører, sendes automatisk, men ikke modtages automatisk: den første parameter af metoder er den instans, metoden kaldes på.

Hvad er brugen af ​​selv i Python?

Når du arbejder med klasser i Python, refererer udtrykket selv til den forekomst af klassen, der i øjeblikket bruges. Det er sædvanligt at bruge selv som den første parameter i instansmetoder i en klasse. Hver gang du kalder en metode for et objekt, der er oprettet fra en klasse , overføres objektet automatisk som det første argument ved hjælp af selv-parameteren. Dette giver dig mulighed for at ændre objektets egenskaber og udføre opgaver, der er unikke for den pågældende instans.

Python3




class> mynumber:> > def> __init__(> self> , value):> > self> .value> => value> > > def> print_value(> self> ):> > print> (> self> .value)> obj1> => mynumber(> 17> )> obj1.print_value()>

Produktion:

17 

Python Class selvkonstruktør

Når du arbejder med klasser, er det vigtigt at forstå, at i Python er en klassekonstruktør en speciel metode ved navn __hed__ der bliver kaldt, når du opretter en forekomst (objekt) af en klasse. Denne metode bruges til at initialisere objektets attributter. Husk, at selv-parameteren i konstruktøren refererer til den instans, der oprettes, og giver dig adgang til og indstiller dens attributter. Ved at følge disse retningslinjer kan du oprette kraftfulde 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)>

Produktion:

Maths Science 

Er selv i Python et nøgleord?

Ingen, 'selv' er ikke en søgeord i Python. S elf> er blot et parameternavn, der bruges i instansmetoder til at henvise til selve instansen.

På en mere klar måde kan du sige, at SELV har følgende kendetegn-

Selv: Pointer til aktuelt objekt

Selvet peger altid på det aktuelle objekt. Når du opretter en forekomst af en klasse, opretter du i det væsentlige et objekt med sit eget sæt attributter og metoder.

Python3




class> check:> > def> __init__(> self> ):> > print> (> 'Address of self = '> ,> id> (> self> ))> obj> => check()> print> (> 'Address of class object = '> ,> id> (obj))>

Produktion:

Address of self = 140273244381008 Address of class object = 140273244381008 

Eksempel: Oprettelse af klasse med attributter og metoder

Denne kode definerer en Python-klasse car> repræsenterer biler med attributterne 'model' og 'farve'. Det __init__> constructor initialiserer disse attributter for hver instans. Det show> metode viser model og farve, mens direkte attributadgang og metodekald demonstrerer instansspecifik datahentning.

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

Produktion:

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 argument, der sendes ind Konstruktør og Instance Method.Self skal angives som en første parameter til Instance-metoden og konstruktøren. Hvis du ikke giver det, vil det forårsage en fejl.

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: Konvention, ikke nøgleord

Selvet er en konvention og ikke en Python nøgleord . Self er en parameter i Instance Method, og brugeren kan bruge et andet parameternavn i stedet for det. Men det er tilrådeligt at bruge self, fordi det øger kodens læsbarhed, 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()>

Produktion:

we have used another parameter name in place of self