[python] Konstruktor tridy, dedicnost

David Michal dmichal na altien.com
Úterý Srpen 19 15:10:26 CEST 2008


JJ presne tak, provedl se pouze __init__() tridy Child. Jestli lze nejak
vyvolat konstruktory vsech trid to nevim, ale urite to nejak jde.
Ale ja bych v podobnem pripade upravil Child takto:
class Child(Base):
    def __init__(self):
        Base.__init__(self)
        Self.x = 1

David

> -----Original Message-----
> From: python-bounces na py.cz [mailto:python-bounces na py.cz] On Behalf Of
> jvotroubek
> Sent: Tuesday, August 19, 2008 2:03 PM
> To: python na py.cz
> Subject: [python] Konstruktor tridy, dedicnost
> 
> Ahoj.
> 
> Chtel jsem se zeptat...
> 
> class Base:
>   def __init__(self):
>     self.y = 2
>   #enddef
> #endclass
> 
> class Child(Base):
>   def __init__(self):
>     self.x = 1
>   #enddef
> #endclass
> 
> c = Child()
> print c.x, c.y
> 
> ... a kod vyhodi AttributeError.
> Chapu-li to spravne, tak konstruktor tridy Child zastinil konstruktor
> tridy Base. Znamena to, ze se vzdycky vyvola nejvrchnejsi konstruktor?
> Jde nejak vyvolat konstruktory vsech trid, pres ktere se dedi?
> 
> Diky, Honza



Další informace o konferenci Python