TransWikia.com

No toma mi argumento de año de una forma de herencia simple

Stack Overflow en español Asked by Carlos Posdas on November 18, 2021

Cuando trato de tomar el valor de la herencia de "year" al querer mostrarlo con una nueva función no me toma el argumento correcto.

La superclase es

""""

class coche():      
    def __init__(self, nombre, tipo, year ):
        self.nombre= nombre
        self.tipo=tipo 
        self.year=year


    def __str__(self):
    print ("%s es un coche de tipo %s del año %s n"  % (self.nombre, self.tipo, self.year))
ibiza19= coche("Ibiza","Comercial","2019")

"""

El resultado del str es : Ibiza es un coche de tipo Comercial del año 2019

Sin embargo el momento de heredar a una subclase el argumento de nombre si lo toma correctamente pero el argumento "year" no

"""

class decompeticion(coche):
    def __init__(self,nombre, year, tipo_competicion, escuderia):
        coche.__init__(self, nombre, year, "decompeticion")
        self.tipo_competicion=tipo_competicion
        self.escuderia=escuderia

    def show_competencia(self):
    if self.tipo_competicion == "F1":
        print ("%s es un coche de competicion del año %s "  % (self.nombre, self.year))
        print("Compite en la %s donde son monoplazas, pertenece a la esuderia %s n" % (self.tipo_competicion, self.escuderia))

z1round= decompeticion("Z1round",2011,"F1","Mclaren")

"""

El resultado es el siguiente: Z1round es un coche de competicion del año decompeticion
Compite en la F1 donde son monoplazas, pertenece a la esuderia Maclaren

Gracias.

One Answer

Tu superclase coche tiene el constructor con parámetros (nombre, tipo, year).

Y donde pasas valores al constructor de coche está mal el orden de los parámetros -> (self, nombre, year, "decompeticion") y por tal razón, imprime "decompeticion" en lugar del año.

Lo correcto sería (self, nombre, "decompeticion", year)

class decompeticion(coche):
    def __init__(self,nombre, year, tipo_competicion, escuderia):
        coche.__init__(self, nombre, "decompeticion", year)
        self.tipo_competicion=tipo_competicion
        self.escuderia=escuderia

Answered by Darwin on November 18, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP