[python] class a subclass
Roman Miklos
RMiklos na pss.sk
Pátek Listopad 10 18:52:59 CET 2006
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 <mtip na atlas.cz>
Sent by: python-bounces na py.cz
10.11.2006 18:14
Please respond to
Konference PyCZ <python na py.cz>
To
Konference PyCZ <python na 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 <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
_______________________________________________
Python mailing list
Python na 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
Daląí informace o konferenci Python