Forum >> Principianti >> Metodi Speciali - cosa sono?

Pagina: 1

Salve a tutti,
Sto cercando di capire esattamente cosa sono i metodi speciali. Prima di tutti sono metodi, cioe' funzioni definite all'interno di una classe (almeno cosi' la vedo).

In Python ci sono tante parole risevate (keywords) e funzioni built-in (come print(), add(), type(), ecc).

Questi metodi speciali sono metodi "predefiniti" che possono essere usati all'interno di una classe che si definisce ed appartengono a classi predefinite internamente a Python. Ho capito correttamente? Questo perche' i metodi speciali sono essenzialmente invocati implicitamente quando si usano le funzioni built-in.

Ma a cosa servono essattamente all'interno di una classe? Per esempio, __init__ puo' essere usato o meno dentro una classe. Se non si include __init__, penso che il metodo venga comunque invocato indirettamente?

Ecco alcuni esempi: __main__ , __str__ , __new__




Grazie,

Confuso83
Nuovamente ciao, i metodi speciali o in Python sarebbe meglio dire i Dunder Methods, dove Dunder sta per double under (score), qualcuno li chiama anche metodi magici, ma mi fa sempre un po' paura questa definizione. Comunque sia sono un insieme di metodi speciali che riconosci facilmente per la presenza prima e dopo del nome del doppio __, ad esempio __str__ e ti permettono di arricchire le tue classi con costrutti inclusi nel linguaggi. Devi notare come questi metodi non siano chiamati direttamente dall'utente, ma è Python stesso ad invocarli, ecco perché qualcuno li definisce magici. Facciamo un esempio?

Creiamo un lista ed otteniamo uno dei valori associati:
>>> l = ["cane", "gatto", "topo"]
>>> l[1]
gatto
Perfetto abbiamo usato un dunder method e non lo sappiamo neanche, ma vediamo come esplicitarlo:
>>> l = ["cane", "gatto", "topo"]
>>> l.__getitem__(1)
gatto
Forse ora è chiaro che Python nel primo caso ha chiamato questo metodo speciale per noi. Similarmente nelle tue classi andrai a definire l'implementazione di questi metodi che ti consentono quindi di ottenere funzionalità che sono proprie dei built-in di Python. Volendo potrai quindi implementare __str__ o __repr__ o quello che ti serve per fargli fare quello che ritieni necessario. Dai un'occhiata qui per avere maggiori dettagli.

Per sapere quali sono puoi sempre usare help() per scoprirli.

Un consiglio spassionato. Questi argomenti non li puoi affrontare su un forum o vedendo un video, ti consiglio di affidarti ad un buon testo e portarti avanti nella lettura e nella comprensione di questi fondamentali aspetti del linguaggio.

Cya


Pagina: 1



Esegui il login per scrivere una risposta.