[pyar] Aprendiendo sobre Clases y Herencia

QliX=D! [aka EHB] qlixed en gmail.com
Sab Dic 4 16:25:19 ART 2010


__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
>
>
>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20101204/dc4196f6/attachment.html>


More information about the pyar mailing list