Python - konstruktori

Satura rādītājs
In Python ir tā sauktās "burvju" metodes, tas ir, metodes, kas ir konstruētas un kurām ir īpašs nosaukums un kuras tiek izsauktas tikai noteiktos apstākļos, jo šo metožu tieša izsaukšana programmas ietvaros nav parasta.
Celtnieki
Metode __tajā__ tā ir atbildīga par konstruktoru, tas ir, tā inicializēs atribūtu sēriju un izpildīs kodu, ko mēs definējam brīdī, kad tiek izveidots klases objekts, ko sauc par "__init__" ar diviem pasvītrojumiem sākuma vārda sākums un beigas, tad jums jau ir atbilstoša sintakse Python uztver to kā "burvju" metodi un zini, ka tā ir jāizpilda, paraugoties uz klasi.
Konstruktors sasniedz to, ka tā vietā, lai inicializētu objektu, rīkojieties šādi:
 >>> f = FooBar () >>> f.init () 

Jau ievietojot šo kodu, objekts ir inicializējis savus atribūtus tikai, izmantojot:
>>> f = FooBar ()

Kā redzat, tas ir svarīgs ietaupījums kodēšanas laikā un palīdzība gadījumā, ja mēs aizmirstam inicializēt objektu.
Konstruktoru izveide
Izveidojiet konstruktoru Python Tas ir pavisam vienkārši, mums vienkārši jānosaka metode un jāpievieno, kas jādara, kad objekts ir izveidots, apskatīsim piemēru:

Attēlā var redzēt definēto metodi, un tajā, kas tai jāizpilda, mēs redzam, ka tā definē atribūtu somevar un ir vienāds ar 42. Apskatīsim piemēru, kā darbotos šīs klases objekts:

Attēlā mēs to redzam, nosakot tipa objektu f FooBar Tas tiek inicializēts, un, piekļūstot tā atribūtam, somevar izdrukā 42, kas ir konstruktorā definētā vērtība.
Kas notiek, ja mēs vēlamies, lai atribūti tiktu dinamiski inicializēti, pārrakstīsim metodi šādi:
 klase FooBar: def __init __ (self, value = 42): self.somevar = vērtība 

Izveidojot izvēles parametru, mēs varam nodot vērtību, ja mēs to nenodosim, tā noklusējuma vērtība būs 42.
Programmas izpilde būtu šāda:
 >>> f = FooBar ('Šis ir konstruktora arguments') >>> f.somevar 'Šis ir konstruktora arguments' 

Tādā veidā mēs esam padarījuši savu konstruktoru dinamisku, lai mēs varētu saviem objektiem piešķirt dažādus atribūtus atkarībā no mūsu vajadzībām programmas ietvaros.
Konstruktoru pārrakstīšana
Ir gadījumi, kad mums ir jāmanto no super klasēm, tāpēc dažreiz mums ir jāpārraksta konstruktors. Apskatīsim šādu piemēru, lai saprastu, kas tas ir:

Šeit mēs esam izveidojuši klasi ar nosaukumu Putns, kur konstruktors definē izsalkušo atribūtu, mēs izpildām sekojošo un redzam, kā tas darbojas:
 >>> b = Putns () >>> b.eat () Aaaah … >>> b.eat () Nē, paldies! 

Kas notiks, ja mēs mantosim šo klasi, aplūkosim šādu kodu:
 klases SongBird (Bird): def __init __ (self): self.sound = 'Squawk!' def sing (self): drukāt sevi.skaņa 

Mēs vadām nelielu programmu:
 >>> sb = SongBird () >>> sb.sing () Squawk! 

Tagad, ja mēs izsauksim metodi eat (), mēs redzēsim kļūdu:
 >>> sb.eat () Traceback (pēdējais zvans): Fails "", 1. rinda, in? Failā "birds.py", 6. rindā, ēdiet, ja esat izsalcis: AtribūtsKļūda: SongBird instancē nav atribūta "izsalcis" 

Izņēmums mums norāda, ka izsalkušais atribūts neeksistē, tāpēc mums ir jāsauc mūsu konstruktora superklases konstruktors:
 klases SongBird (Bird): def __init __ (self): Bird .__ init __ (self) self.sound = 'Squawk!' def sing (self): drukāt sevi.skaņa 

Tagad, izpildot kodu, viss darbosies bez problēmām:
 >>> sb = SongBird () >>> sb.sing () Squawk! >>> sb.eat () Aaaah … >>> sb.eat () Nē, paldies! 

Ar to mēs pabeidzam apmācību, mēs jau zinām, kā pamata veidā izmantot __init__ metodi un kā to izdarīt, kad mums ir jāiemanto no augstākas klases.Vai jums patika šī apmācība un palīdzējāt tai?Jūs varat apbalvot autoru, nospiežot šo pogu, lai sniegtu viņam pozitīvu punktu
wave wave wave wave wave