[python] Konstruktor tridy, dedicnost

Jan Janech devel na atlas.sk
Úterý Srpen 19 15:13:54 CEST 2008


Musite volat aj konstruktor predka. Robi sa to bud:

class Child(Base):
     def __init__(self):
         Base.__init__(self)
         self.x = 1

alebo:

class Child(Base):
     def __init__(self):
         super(Child, self).__init__()
         self.x = 1


jvotroubek wrote:
> 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
-- 

____________________________
Ing. Jan Janech
Katedra softverovych technologii
Fakulta riadenia a informatiky
Zilinska Univerzita


Další informace o konferenci Python