es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Usando clases principales de Python y obteniendo el error “x no está definido”. ¿Cómo puedo arreglar esto?

Hola, estoy utilizando una clase padre para crear algunas funciones y al ejecutar mi función ribbon_three obtengo un error que x no está definido. ¿Alguien sabe cómo solucionarlo?

     class present(cuboid):
"""clase para regalos que hereda de la clase cuboide"""
def __init__(self,x,y,z,color):
    self.x=x
    self.y=y
    self.z=z
    self.color=color
    super(present, self).__init__(x,y,z)
def ribbon_three(self):
    return 4*x+4*y+4*z

def ribbon_two(self):
    x=cuboid.perimeters(self)
    return x[0]+x[1]+15


p=present(1,2,3,"azul")
print(p.ribbon_three())   
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código actual es que la variable x usada en el método ribbon_three() no ha sido definida antes de su uso. Una forma de solucionar esto sería definir x en el método __init__ y usar la variable de instancia self.x en ribbon_three() como sigue:

    class present(cuboid):
        """clase para el regalo hereda de la clase cuboide"""
        def __init__(self,x,y,z,color):
            self.x=x
            self.y=y
            self.z=z
            self.color=color
            super(present, self).__init__(x,y,z)
    
        def ribbon_three(self):
            return 4*self.x+4*self.y+4*self.z
    
        def ribbon_two(self):
            x=cuboid.perimeters(self)
            return x[0]+x[1]+15
    
    
    p=present(1,2,3,"azul")
    print(p.ribbon_three())
    

    En este código actualizado, x se define como una variable de instancia en el método __init__ y se usa en el método ribbon_three() como self.x. Esto asegura que el valor de x se almacena como un atributo de la instancia y puede ser accedido por cualquiera de los métodos de la instancia.

Comments are closed.