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__

__eq__ ¿por qué lo necesitamos?

Si Python ya puede hacer esto, ¿por qué necesitamos este dunder eq? ¿Podría alguien explicar por favor, ¡gracias!

list1 = [2, 3]
list2 = [2, 3]
if list1 == list2:
    print(eq)
else:
    print(no eq)
eq

1 Respuesta

Chris Freeman
Chris Freeman
68,469 puntos

Hola Riley Ittidecharchoti, ¡gran pregunta!

Los tipos integrados, tales como list, todos tienen __eq__ definido. Cualquier clase nueva que se derive de los tipos integrados heredará el __eq__ método.

Si se define una clase nueva que no hereda de un tipo integrado y se utilizará en una == declaración de comparación, entonces debe tener un __eq__ método definido o no puede ser comparado. En otras palabras, el == operador llama al __eq__ método.

Publica de nuevo si necesitas más ayuda. ¡Buena suerte!

¡Gracias! Lo entiendo. Gracias por tomarte el tiempo de responder. Lo mismo para los otros dunder ( ¿cómo debería referirme a ellos? ) ¿verdad?

Chris Freeman
Chris Freeman
68,469 puntos

¡Correcto! Cada uno de los dunder o métodos "con nombres especiales", tienen una correspondencia de uno a uno con el uso de un operador en el objeto, el objeto siendo invocable, usando el objeto como tipo hashable en una clave de diccionario, etc. Básicamente un método dunder para cada contexto en el que un objeto podría ser utilizado.