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