[python] class a subclass
mtip
mtip na atlas.cz
Pátek Listopad 10 18:14:09 CET 2006
>>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 <mtip na atlas.cz>
RM> Sent by: python-bounces na py.cz
RM> 10.11.2006 17:24
RM> Please respond to
RM> Konference PyCZ <python na py.cz>
RM> To
RM> Konference PyCZ <python na 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 na 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 na py.cz
RM> http://www.py.cz/mailman/listinfo/python
Další informace o konferenci Python