[python] class a subclass

mtip mtip na atlas.cz
Pátek Listopad 10 17:24:58 CET 2006


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



Další informace o konferenci Python