[pyar] Aprendiendo sobre Clases y Herencia

Facundo Batista facundobatista en gmail.com
Sab Dic 4 16:31:05 ART 2010


2010/12/4 craf <prog en vtr.net>:

> 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".

Ojo que estás haciendo que Bus herede de Vehiculo pero no estás
llamando al __init__ de Vehiculo en Bus...


> 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)

No.

Si hacés eso con el código que pasaste arriba, funciona.

>>> pullman = Bus(110)
>>> pullman.Pasajeros()
Van 110 Pasajeros

O estás haciendo otra cosa, o tenés otro código y no el que mostraste arriba...

Slds.

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/



More information about the pyar mailing list