Turinys
In Python yra vadinamųjų „stebuklingų“ metodų, tai yra metodų, kurie yra sukurti ir turi ypatingą pavadinimą ir kurie vadinami tik tam tikromis aplinkybėmis, nes tiesioginis šių metodų iškvietimas nėra įprastas programos taikymo srityje.Statybininkai
Metodas __init__ jis yra atsakingas už konstruktoriaus veikimą, tai yra, jis inicijuos atributų seriją ir vykdys kodą, kurį mes apibrėžiame tuo metu, kai sukuriamas klasės objektas, vadinamas „__init__“ su dviem pabraukimais pradinio žodžio pradžia ir pabaiga, tada jau turite tam tinkamą sintaksę Python priimkite tai kaip „stebuklingą“ metodą ir žinokite, kad jis turi būti įvykdytas, kai parodoma klasė.
Konstruktorius pasiekia tai, kad vietoj to, kad inicijuotumėte objektą, atlikite šiuos veiksmus:
>>> f = „FooBar“ () >>> f.init ()
Jau įdėdamas šį kodą objektas inicijavo savo atributus tik naudodamas:
>>> f = „FooBar“ ()
Kaip matote, tai yra svarbus taupymas koduojant ir pagalba, jei pamirštame inicijuoti objektą.
Konstruktoriaus kūrimas
Sukurkite konstruktorių Python Tai gana paprasta, mes tiesiog turime apibrėžti metodą ir pridėti, ką reikia padaryti kuriant objektą, pažiūrėkime pavyzdį:
Paveikslėlyje galite pamatyti apibrėžtą metodą ir tai, ką jis turi vykdyti, matome, kad jis apibrėžia atributą somevar ir lygus 42. Pažiūrėkime pavyzdį, kaip veiktų šios klasės objektas:
Paveiksle matome, kad apibrėžiant tipo objektą f „FooBar“ Jis inicijuojamas ir, pasiekus jo atributą, somevar atspausdina 42, tai yra konstruktoriuje apibrėžta vertė.
Kas atsitiks, jei norime, kad atributai būtų dinamiškai inicijuoti, perrašykime metodą taip:
„FooBar“ klasė: def __init __ (self, value = 42): self.somevar = value
Padarę pasirenkamą parametrą, galime perduoti reikšmę, jei jo nepriimsime, numatytoji reikšmė bus 42.
Programos vykdymas būtų toks:
>>> f = FooBar ('Tai konstruktoriaus argumentas') >>> f.somevar 'Tai konstruktoriaus argumentas'
Tokiu būdu mes padarėme savo konstruktorių dinamišką, kad galėtume priskirti skirtingus atributus mūsų objektams, priklausomai nuo mūsų poreikių programoje.
Konstruktoriaus perrašymas
Kartais mes turime paveldėti iš super klasių, nes kartais turime perrašyti konstruktorių, pažiūrėkime šį pavyzdį, kad suprastume, kas tai yra:
Čia sukūrėme klasę, pavadintą Paukštis, kur konstruktorius apibrėžia alkaną atributą, vykdome šiuos veiksmus ir pamatysime, kaip tai veikia:
>>> b = Paukštis () >>> b.eat () Aaaah … >>> b.eat () Ne, ačiū!
Kas atsitiks, jei paveldėsime iš šios klasės, pažiūrėkime šį kodą:
klasės „SongBird“ (paukštis): def __init __ (self): self.sound = 'Squawk!' def sing (self): spausdinti save.garsas
Mes vykdome nedidelę programą:
>>> sb = SongBird () >>> sb.sing () Squawk!
Dabar, jei vadinsime valgyti () metodą, pamatysime klaidą:
>>> sb.eat () Traceback (paskutinis paskutinis skambutis): failas "", 1 eilutė, in? Failas „birds.py“, 6 eilutė, valgykite, jei esate alkanas: alkanas: AtributasKlaida: „SongBird“ egzempliorius neturi atributo „alkanas“
Išimtis mums sako, kad alkanas atributas neegzistuoja, todėl mes turime paskambinti savo konstruktoriaus super klasės konstruktoriui:
klasės „SongBird“ (paukštis): def __init __ (self): Bird .__ init __ (self) self.sound = 'Squawk!' def sing (self): spausdinti save.garsas
Dabar vykdant kodą viskas veiks be problemų:
>>> sb = SongBird () >>> sb.sing () Squawk! >>> sb.eat () Aaaah … >>> sb.eat () Ne, ačiū!
Baigę pamoką, mes jau žinome, kaip iš esmės naudoti __init__ metodą ir kaip tai padaryti, kai turime paveldėti iš aukštesnės klasės.Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką