logo

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




numset prik

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. Self>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-klassecar>repræsenterer biler med attributterne 'model' og 'farve'. Det__init__>constructor initialiserer disse attributter for hver instans. Detshow>metode viser model og farve, mens direkte attributadgang og metodekald demonstrerer instansspecifik datahentning.

Python3




ulv vs ræv
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


arv java



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