0

me gustaría pediros ayuda para quitarme la siguiente duda de este código:

class Moto(Vehiculos):
    hcaballito = ""

    def caballito(self):
        self.hcaballito = "voy haciendo el caballito."

    def estado(self):
        print("Marca: ", self.marca, "\nModelo: ", self.modelo, " \nEn marcha: ", self.enmarcha, "\nAcelerando: ", self.acelera, "\nFrenando: ", self.frena, "\n", self.hcaballito)

mimoto = Moto("Honda","Modelo")
mimoto.caballito()
mimoto.estado()

¿Por qué no es necesario poner self.hcabaillo en la primera variable que está dentro de la clase moto?

El código es un parte de un vídeo tutorial que estoy siguiendo para aprender.

Gracias!

Man
  • 137
  • 6
  • 2
    Porque es un atributo de clase, no de instancia, mírate: [Diferencia entre atributos de instancia y atributos de clase](https://es.stackoverflow.com/q/132561/15089). Puede resultarle de ayuda mirar también: [¿Para qué se utiliza self en POO en Python?](https://es.stackoverflow.com/q/90357/15089). – FJSevilla Jul 14 '19 at 16:56
  • 2
    Todas las instancias de `Moto` comparten el atributo `hcaballito`, es el mismo objeto para todas ellas, la misma cadena. Por otro lado, cuando haces `self.hcaballito = "voy haciendo el caballito."` en el método de instancia estás creando un atributo de instancia que solapa al atributo de clase. A partir de llamarlo, `mimoto` tiene un atributo de clase (`Moto.hcaballido`) que es una cadena vacía y un atributo de instancia (`self.hcaballito`) que es `"voy haciendo el caballito."`, en la pregunta anterior se explica esto también. **En ningún momento modificas el atributo de clase de esa forma** – FJSevilla Jul 14 '19 at 17:00

0 Answers0