[python] class a subclass

Roman Miklos RMiklos na pss.sk
Pátek Listopad 10 18:00:32 CET 2006


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

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





mtip <mtip na atlas.cz> 
Sent by: python-bounces na py.cz
10.11.2006 17:24
Please respond to
Konference PyCZ <python na py.cz>


To
Konference PyCZ <python na py.cz>
cc

Subject
Re: [python] class a subclass






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

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


x=b()
x.ma()
 

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

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

Mirek.

s> Použij slovo super.

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

s> Miloslav Ponkrác

_______________________________________________
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