Python usa la palabra "métodos mágicos" , porque esos métodos realmente hacen magia para su programa. Una de las mayores ventajas de utilizar los métodos mágicos de Python es que proporcionan una forma sencilla de hacer que los objetos se comporten como tipos integrados. Eso significa que puede evitar formas desagradables, contrarias a la intuición y no estándar de realizar operadores básicos.
Considere el siguiente ejemplo:
dict1 = {1 : "ABC"}
dict2 = {2 : "EFG"}
dict1 + dict2
Traceback (most recent call last):
File "python", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'
Esto da un error, porque el tipo de diccionario no admite la adición. Ahora, ampliemos la clase de diccionario y agreguemos el método mágico "__add__" :
class AddableDict(dict):
def __add__(self, otherObj):
self.update(otherObj)
return AddableDict(self)
dict1 = AddableDict({1 : "ABC"})
dict2 = AddableDict({2 : "EFG"})
print (dict1 + dict2)
Ahora, da la siguiente salida.
{1: 'ABC', 2: 'EFG'}
Por lo tanto, al agregar este método, de repente ha sucedido la magia y el error que estaba recibiendo antes ha desaparecido.
Espero que te aclare las cosas. Para obtener más información, consulte:
Una guía de los métodos mágicos de Python (Rafe Kettler, 2012)
len()
o sereversed()
aplica a muchos tipos de objetos, pero un método comoappend()
solo se aplica a secuencias, etc.