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 hay una forma más simple de retornar un valor comparado que: return self.model == other.make and other.model == self.make?

¿Simplemente puedes:

def __eq__(self):
  return self.hacer == self.model

Estoy bastante confundido.

4 respuestas

Steven Parker
Steven Parker
244 163 puntos

Ten cuidado de no confundir tus términos, quieres comparar la marca con la marca, y el modelo con el modelo. La marca probablemente nunca coincida con el modelo en el mismo objeto o en 2 diferentes.

Necesitas comparar ambos para asegurarte de que los elementos son iguales, y por eso hay dos comparaciones unidas con la and operación lógica. Requiere que ambas sean verdaderas para que el resultado sea verdadero.

Y necesitas comparar "self" con "other". "self" es el objeto en el que estás ejecutando la prueba, y "other" es el objeto con el que se está comparando a. Comparar dos atributos "self" no revelará nada útil.

¡gracias!

¿Qué tal:

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

¿Devolveríamos el mismo valor?

Steven Parker
Steven Parker
244 163 puntos

Eso todavía está confundiendo "marca" y "modelo"... solo usando los otros en lugar de los internos. Pero sí, tampoco es probable que coincidan. Ten en cuenta que en el video, solo se comparan los atributos similares.

¡ok, gracias!