Bienvenido a la Comunidad de Treehouse

¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.

¿Buscas aprender algo nuevo?

Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de

Inicia tu prueba gratuita

Python Python Orientado a Objetos Básico Emular funciones integradas __eq__

No puedo obtener resultado igual en el video __eq__ dentro de Python Orientado a Objetos Básico

¿Podría alguien revisar mi código a continuación para ver por qué no obtengo igualdad al comparar car_one y car_two?

class Car:
    # Atributos de clase
    ruedas = 4
    puertas = 2
    motor = Verdadero

    # El inicializador
    def __init__(self, model, año, hacer='Ford', gasolina=100):
        # Atributos de Instancia
        self.hacer = hacer
        self.model = model
        self.año = año
        self.gasolina = gasolina
        # los atributos de instancia no tienen
        # que ser pasados
        self.is_moving = False

    def __str__(self):
        return f'{self.make} {self.model} {self.year}'

    def usar_gasolina(self):
        self.gasolina -= 50
        if self.gasolina <= 0:
            return False
        return Verdadero

    def detener(self):
        if self.is_moving:
            print('El auto se ha detenido.')
            self.is_moving = False
        else:
            print('El auto ya se ha detenido.')

    def go(self, velocidad):
        if self.usar_gasolina():
            if mantiene self.is_moving:
                print('El auto comienza a moverse.')
                self.is_moving = Verdadero
            print(f'El auto va a {speed}.')
        else:
            print(¡Se te acabó la gasolina!)
            self.detener()


class Concesionario:
    def __init__(self):
        self.cars = 

    def __iter__(self):
        yield from self.cars

    def __eq__(self,otro):
      return self.hacer == otro.hacer y self.model == otro.model

    def agregar_auto(self, car):
      self.cars.append(car)


car_one = Car(Ka, 2020)
car_two = Car(Ka, 2020)
car_three = Car(Fiesta, 2000)

if car_one == car_two:
  print('equal')
else:
  print('not equal')



#mi_concesionario = Concesionario()
#mi_concesionario.agregar_auto(auto_uno)
#mi_concesionario.agregar_auto(auto_dos)
#mi_concesionario.agregar_auto(auto_tres)
#for auto in mi_concesionario:
 #  print(auto)

1 Respuesta

Chris Jullienne

Hola Chris,

Verifica la ubicación de tu eq función. En este momento, está fuera de tu clase Car. Acabo de probar el código con ella en el lugar correcto y funciona bien. :)

Espero que ayude.