[python] class a subclass

Roman Miklos RMiklos na pss.sk
Sobota Listopad 11 10:39:17 CET 2006


Musim sa pridat k supermanovi, ze ten priklad tata-synek je super. Aj som 
si ho odlozil :-)




"Petr Přikryl" <prikryl na atlas.cz> 
Sent by: python-bounces na py.cz
10.11.2006 23:50
Please respond to
Konference PyCZ <python na py.cz>


To
python na py.cz
cc

Subject
Re: [python] class a subclass






mtip napsal(a):
> RM> Problem je asi niekde v tom, ze v potomku v metode ma() odovzdavas
> RM> self t.j. referenciu na instanciu triedy b (potomka)
> RM> super(b,self).ma()
> 
> RM> Neviem naco by sa v tej funkcii super() mala davat referencia na 
potomka,
> RM> ked to ma ist do rodica.
> RM> Ja som to skusal aj inac ale nejde mi to. Predtym som super() nikdy
> RM> nepouzil. Podla mna tam niekde je problem.
> 
> 
> To je presne ono. Ja to taky tak chapu, jenze lze ziskat neco jako
> instanci rodice ? To asi ne, podle me vsechno bezi na jedne instanci a
> to self potomka.
> Navic sem to zkusil tak, ze misto self tam vytvorim novou instanci
> rodice a poslu a uz to funguje, jak ma. Jenze ta nova instance pred
> kazdym volanim predka nelze v praxi pouzit.

Možná je chyba v tom mentálním obraze rodič-potomek.
Instance odvozené třídy je instance potomka. Žádná
související instance rodičovské třídy neexistuje.
Potomek se chová "úplně jako tata", jenom některé
věci dělá trošku jinak. Prober si tohle

class tata(object):

     def huli(self):
         return 'smoke'

     def chlasta(self):
         return 'glgy glgy'

     def nadava(self):
         return 'do prdele'

     def vlastnosti(self):
         return '%s, %s, %s' % (self.huli(), self.chlasta(), 
self.nadava())

     def __str__(self):
         return self.vlastnosti()


class synek(tata):

     def chlasta(self):
         return 'lok lok'

     def nemysli(self):
         return 'to sem magor'

     def vlastnosti(self):
         # jako tata, trochu jinak, ale navic nemysli

         return tata.vlastnosti(self) + ', ' + self.nemysli()


fotr = tata()
print fotr

syn = synek()
print syn


Vypíše to:
smoke, glgy glgy, do prdele
smoke, lok lok, do prdele, to sem magor



pepr
_______________________________________________
Python mailing list
Python na py.cz
http://www.py.cz/mailman/listinfo/python


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
, P. O. Box 48 
 
Tel.: 
Fax: 



Další informace o konferenci Python