[pyar] [Fwd: Re: Aprendiendo sobre Clases y Herencia]

craf prog en vtr.net
Sab Dic 4 16:45:36 ART 2010


--------- Mensaje reenviado --------
> De: QliX=D! [aka EHB] <qlixed en gmail.com>
> Reply-to: Python Argentina <pyar en python.org.ar>
> Para: Python Argentina <pyar en python.org.ar>
> Asunto: Re: [pyar] Aprendiendo sobre Clases y Herencia
> Fecha: Sat, 4 Dec 2010 16:25:19 -0300
> 
> __init__ de bus deberia ser:
> 
> def __init___(self, gasolina, pasajeros)
>     super(Bus, self).__init__(gasolina)
>     self.pasajeros=pasajeros
> 
> 
> fijate que gasolina en Vehiculo no es opcional, por lo tanto necesitas
> pasarla como parametro en las clases hijas.
> A menos que la hagas opcional o con algun valor por defecto y luego en
> Bus:
> 
> def __init___(self, gasolina, pasajeros)
>     super(Bus, self).__init__(100) # 100 litros!, tanque lleno!.
>     self.pasajeros=pasajeros
> 
> 
> Saludos.
> QliXed [aka EHB]
> 
> 2010/12/4 craf <prog en vtr.net>
>         Hola a todos.
>         
>         Estoy comenzando a aprender sobre la programación orientada a
>         objetos
>         con Python y me he quedado pegado en un punto en el cual no he
>         logrado
>         encontrar una solución.
>         
>         Como punto de partida, mi código es el siguiente:
>         
>         clases.py
>         
>         class Vehiculo:
>            def __init__(self,gasolina):
>                self.gasolina = gasolina
>         
>            def conducir(self):
>                self.gasolina -= 1
>                print('Quedan',self.gasolina,'de gasolina')
>         
>         class Bus(Vehiculo):
>            def __init__(self,numero):
>                self.numero = numero
>         
>            def Pasajeros(self):
>                print('Van',self.numero,'Pasajeros')
>         
>         Como se puede ver, he creado una clase Padre llamada
>         "Vehículo" con una
>         propiedad "gasolina" y un método "conducir. Además he creado
>         también una
>         clase hija llamada "Bus" que hereda de la clase "Vehículo", y
>         que tiene
>         una propiedad "pasajeros" y un método llamado "Pasajeros".
>         
>         Pregunta: Se por lo que he leído que la clase hija hereda los
>         métodos y
>         atributos de la clase padre.
>         Ahora si quisiera crear un objeto "pullman" de la clase "Bus"
>         el código
>         sería:
>         
>         main.py
>         
>         pullman = Bus(110)
>         
>         Y para mostrar el numero de pasajeros, llamaría al método
>         Pasajeros.
>         
>         pullman.Pasajeros()
>         
>         Esto en teoría debería funcionar, pero cuando ejecuto el
>         modulo main.py,
>         este me arroja el siguiente error:
>         
>         "Traceback(most recent call last).
>            File "main.py", line 3, in <module>
>              pullman = Bus(110)
>         TypeError: __init__() takes exactly 3 positional arguments (2
>         given)
>         
>         Según esto dice que el objeto creado tiene que tener 3
>         argumentos y que
>         yo le estoy dando solo 2.
>         Se que el el atributo self, es enviado "automagicamente"
>         cuando se crea
>         el objeto, pero de ahí, ni idea.
>         
>         Cualquier luz sobre esta oscuridad, lo agradezco ;=).
>         
>         Saludos.
>         
>         Cristian
>         
>         
Ok, voy a probar todo lo que me indicas.
Muchas gracias .

Saludos.

Craf






More information about the pyar mailing list