Python usa la parola "metodi magici" , perché quei metodi eseguono davvero la magia per il tuo programma. Uno dei maggiori vantaggi dell'utilizzo dei metodi magici di Python è che forniscono un modo semplice per far sì che gli oggetti si comportino come tipi incorporati. Ciò significa che puoi evitare modi brutti, controintuitivi e non standard di eseguire gli operatori di base.
Considera un esempio seguente:
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'
Questo dà un errore, perché il tipo di dizionario non supporta l'aggiunta. Ora estendiamo la classe del dizionario e aggiungiamo il metodo magico "__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)
Ora fornisce il seguente output.
{1: 'ABC', 2: 'EFG'}
Quindi, aggiungendo questo metodo, improvvisamente si è verificata la magia e l'errore che stavi ottenendo prima è scomparso.
Spero che ti renda le cose chiare. Per ulteriori informazioni, fare riferimento a:
Una guida ai metodi magici di Python (Rafe Kettler, 2012)
len()
oreversed()
applicabile a molti tipi di oggetti, ma un metodo comeappend()
si applica solo alle sequenze, ecc.