Ayuda con la herencia de clases y el metodo __init__

Gabriel Genellina gagsl-py en yahoo.com.ar
Sab Feb 17 06:25:13 CET 2007


En Fri, 16 Feb 2007 09:40:31 -0300, Javier González  
<jgonzalez en grupopitaco.com> escribió:

> ante de nada, decir que soy novato en esto de python  asi que  
> disculparme si pregunto una tonteria,  tengo el siguiente problema ,  
> partiendo de dos clases con sus respectivos  metodos __init__ creo una  
> tercera que hereda de las dos primeras todos sus metodos, al cuestion es  
> que necesito que cuando inicializo esta tercera clase se tienen que  
> ejecutan los metodos init de cada clase. y no se como hacerlo

Hay que invocarlos explicitamente, usando: clase_base.__init__(self, los,  
argumentos, que, correspondan)
Tu ejemplo es muy extraño, porque las clases Z e Y definen los *mismos*  
atributos asi que, no se sabria cuales valores usar.
Lo voy a cambiar un poco para que sea mas realista:

class Z:
     def __init__(self, a, b):
         self.a = a
         self.b = b

class Y:
     def __init__(self, c, d=None):
         if d is None: d=20
         self.c = c
         self.d = d

class X(Y,Z):
     def __init__(self, a, b, c, d=None):
         Z.__init__(self, a, b)
         Y.__init__(self, c, d)

py> m1 = X(1, 3, 5, 7)
py> print m1.a, m1.b, m1.c, m1.d
1 3 5 7
py> m2 = X(11, 12, 13)
py> print m2.a, m2.b, m2.c, m2.d
11 12 13 20

-- 
Gabriel Genellina

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es