3.3 Nomi di metodi speciali

Una classe può implementare certe operazioni che vengono invocate da sintassi speciali (come operazioni aritmetiche o subscript e affettamenti) definendo metodi con speciali nomenclature. Questo è l'approccio di Python all'overload degli operatori, permettendo alle classi di definire il proprio comportamento rispettando altresì gli operatori del linguaggio. Per esempio, se una classe definisce un metodo chiamato __getitem__() ed x è un'istanza di questa classe, x[i] equivale a x.__getitem__(i). Eccetto dove menzionato, i tentativi di eseguire un'operazione quando non sono stati definiti metodi appropriati, sollevano un'eccezione.

Quando si implementa una classe che emula qualsiasi tipo built-in, è importante che l'emulazione sia implementata solo al livello che abbia un senso per l'oggetto che si è preso a modello. Per esempio, alcune sequenze possono funzionare bene per il recupero di elementi individuali, ma l'estrazione di una fetta può non avere senso. (Un esempio di questo è l'interfaccia NodeList nel Document Object Model del W3C.)



Subsections
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.