savarankiškai Python klasėje
Aš reprezentuoja klasės egzempliorių. Naudodami save, galime pasiekti klasės atributus ir metodus Python . Jis susieja atributus nurodytais argumentais. Priežastis, kodėl reikia naudoti save. Taip yra todėl, kad „Python“ nenaudoja @ sintaksės egzempliorių atributams nurodyti. Python nusprendė atlikti metodus taip, kad egzempliorius, kuriam priklauso metodas, būtų perduodamas automatiškai, bet negaunamas automatiškai: pirmasis metodų parametras yra egzempliorius, kuriam metodas iškviečiamas.
Kas yra „self“ naudojimas „Python“?
Dirbant su klasėmis Python, terminas self reiškia klasės egzempliorių, kuris šiuo metu naudojamas. Klasės egzempliorių metoduose įprasta naudoti save kaip pirmąjį parametrą. Kai iškviečiate objekto metodą, sukurtą iš a klasė , objektas automatiškai perduodamas kaip pirmasis argumentas naudojant savęs parametrą. Tai leidžia modifikuoti objekto ypatybes ir vykdyti užduotis, būdingas tam konkrečiam egzemplioriui.
Python3
class> mynumber:> > def> __init__(> self> , value):> > self> .value> => value> > > def> print_value(> self> ):> > print> (> self> .value)> obj1> => mynumber(> 17> )> obj1.print_value()> |
Išvestis:
17
Python klasės savarankiškas konstruktorius
Dirbant su klasėmis svarbu suprasti, kad Python programoje klasės konstruktorius yra specialus metodas, pavadintas __karšta__ kuri iškviečiama, kai sukuriate klasės egzempliorių (objektą). Šis metodas naudojamas objekto atributams inicijuoti. Atminkite, kad savęs parametras konstruktoriuje nurodo kuriamą egzempliorių ir leidžia pasiekti bei nustatyti jo atributus. Vadovaudamiesi šiomis gairėmis galite sukurti galingas ir efektyvias klases 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)> |
Išvestis:
Maths Science
Ar pats Python yra raktinis žodis?
ne, ' savarankiškai ' nėra a raktažodį Python. S elf> yra tik parametro pavadinimas, naudojamas egzempliorių metoduose, nurodant patį egzempliorių.
Aiškiau galite pasakyti, kad SELF turi šias charakteristikas:
Savarankiškas: žymeklis į dabartinį objektą
Aš visada rodo į esamą objektą. Kai kuriate klasės egzempliorių, iš esmės kuriate objektą su savo atributų ir metodų rinkiniu.
Python3
class> check:> > def> __init__(> self> ):> > print> (> 'Address of self = '> ,> id> (> self> ))> obj> => check()> print> (> 'Address of class object = '> ,> id> (obj))> |
Išvestis:
Address of self = 140273244381008 Address of class object = 140273244381008
Pavyzdys: klasės su atributais ir metodais kūrimas
Šis kodas apibrėžia Python klasę car> reprezentuojantys automobilius su atributais „modelis“ ir „spalva“. The __init__> konstruktorius inicijuoja šiuos kiekvieno egzemplioriaus atributus. The show> metodas rodo modelį ir spalvą, o tiesioginė atributų prieiga ir metodų iškvietimai parodo konkrečių atvejų duomenų gavimą.
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)> |
Išvestis:
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
Savarankiškai konstruktoriai ir metodai
Aš yra pirmasis argumentas, kurį reikia pateikti Konstruktorius ir Instance Method.Self turi būti pateiktas kaip pirmasis egzemplioriaus metodo ir konstruktoriaus parametras. Jei jo nepateiksite, bus padaryta klaida.
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> |
Pats: susitarimas, o ne raktinis žodis
Aš yra susitarimas, o ne a Python raktinis žodis . Self yra egzempliorių metodo parametras ir vartotojas gali naudoti kitą parametro pavadinimą vietoj jo. Tačiau patartina naudoti savarankiškai, nes tai padidina kodo skaitomumą, be to, tai yra gera programavimo praktika.
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()> |
Išvestis:
we have used another parameter name in place of self