Problem je asi niekde v tom, ze v potomku v metode ma() odovzdavas
self t.j. referenciu na instanciu triedy b (potomka)
super(b,self).ma()
 
Neviem naco by sa v tej funkcii super() mala davat referencia na potomka, 
ked to ma ist do rodica.
Ja som to skusal aj inac ale nejde mi to. Predtym som super() nikdy 
nepouzil. Podla mna tam niekde je problem.






mtip <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
10.11.2006 18:14
Please respond to
Konference PyCZ <python@py.cz>


To
Konference PyCZ <python@py.cz>
cc

Subject
Re: [python] class a subclass






>>Proc by mel Python hledat
>>nejprve metodu v potomku, kdyz ji volam z rodice ?

RM> ale ty vytvoris instanciu potomka a volas teda metodu potomka takto
RM> x=b()
RM> x.ma()

ME NEJDE O TO x.ma(). JDE O TO:
x.ma()- > vola ma() v potomku = OK
ma() uvnitr vola rodicovske ma() = OK
rodicovske ma() uvnitr vola self.prn() a to se vrati k potomkovi,
protoze existuje stejna metoda b.ma()  a to je podle me chyba !
tady by mel rodic volat svoje ma().
Mirek.
















RM> mtip <[EMAIL PROTECTED]> 
RM> Sent by: [EMAIL PROTECTED]
RM> 10.11.2006 17:24
RM> Please respond to
RM> Konference PyCZ <python@py.cz>


RM> To
RM> Konference PyCZ <python@py.cz>
RM> cc

RM> Subject
RM> Re: [python] class a subclass






RM> Zkusil jsem super a vysledek je ten samy.
RM> class a(object):
RM>     def prn(self):
RM>         print 'a',self
RM>     def ma(self):
RM>         self.prn()
RM>     def aa(self):
RM>         pass

RM> class b(a):
RM>     def prn(self):
RM>         print 'b',self
RM>     def ma(self):
RM>         '''prekryje a.ma()'''
RM>         super(b,self).ma()
RM>     def ba(self):
RM>         pass


RM> x=b()
RM> x.ma()
 

RM> Zjistil jsem, ze to funguje, jen pokud to zavolam takto:
RM> class b(a):
RM>     def prn(self):
RM>         print 'b',self
RM>     def ma(self):
RM>         '''prekryje a.ma()'''
RM>         a.ma(a())
RM>     def ba(self):
RM>         pass

RM> Coz je samozrejme nesmysl, protoze vytvarim novou instanci a.
RM> Tak se mi zda, ze tohle je neprijemna chyba. Proc by mel Python hledat
RM> nejprve metodu v potomku, kdyz ji volam z rodice ?

RM> Mirek.

s>> Použij slovo super.

s>> super(a,x).ma()

s>> Miloslav Ponkrác

RM> _______________________________________________
RM> Python mailing list
RM> Python@py.cz
RM> http://www.py.cz/mailman/listinfo/python


RM> Mgr. Ing. Roman MIKLÓŠ 
RM> Prvá stavebná sporiteľňa a.s. 
RM> Bajkalská 30, P. O. Box 48 
RM> 829 48  Bratislava 25 
RM> Tel.: +421/ 2 / 582 31 174 
RM> Fax: +421/ 2 / 582 31 109 

RM> _______________________________________________
RM> Python mailing list
RM> Python@py.cz
RM> http://www.py.cz/mailman/listinfo/python



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


Mgr. Ing. Roman MIKLÓŠ 
Prvá stavebná sporiteľňa a.s. 
Bajkalská 30, P. O. Box 48 
829 48  Bratislava 25 
Tel.: +421/ 2 / 582 31 174 
Fax: +421/ 2 / 582 31 109 

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

Odpovedet emailem