Python: metodi e metodi speciali

astruso83
Salve a tutti,

Sono alle prese con l'argomento classi e instanze. Ho capito come creare classi, metodi, ttributi ed oggetti dalla classe. Ho chiara la differenza fra attributi di istanza, variabili univoche per ogni istanza, e le variabili di classe condivise da tutte le istanze e che hanno un valore fissato per default dall'inizio della classe. Il valore dell'attributo di classe puo' essere anche un input dell'utente oppure e' sempre settato al momento di creazione della classe?)

In merito ai metodi (che sono funzioni), ci sono metodi, metodi di classe e anche metodi speciali. L'esempio classico di metodo speciale e' l'inizializzatore __init__. Potreste spiegarmi l'utilita' dei metodi speciali? Che vantanggi offrono? Per esempio, potrei creare una classe ed oggetti da essa senza usare il metodo __init__. Ci sono molti metodi speciali...

Grazie!

Risposte
apatriarca
I metodi speciali vengono utilizzate in specifiche situazioni, come l'inizializzazione o quando compari due istanze della classe. Non sono necessarie, ma sono di solito usate per migliorare l'usabilità della classe. A parte il nome sono del tutto equivalenti alle altre funzioni.

astruso83
Grazie,
Per esempio, che beneficio si ha usando il metodo speciale __init__ in una classe?
Si riesce benissimo a creare una classe con attributi e metodi senza usare __init__.
Forse l'uso di __init__ stabilisce che gli oggetti creati abbiano tutti uniformemente specifi attributi in partenza? Senza __init__, potrei fose creare attributi anche dopo avere creato l'oggetto ed avere oggetti derivanti dalla stessa classe ma con attributi diversi?

apatriarca
Usando __init__ si hanno maggiori garanzie sulla struttura delle istanze della classe e fornisce un posto unico dove trovare il codice di inizializzazione della istanza. Non è necessario usare queste funzionalità (e in effetti potresti anche non usare le classi ma solo dizionari), ma facendolo semplifichi la vita a chi dovrà usare tale classe e sarà più facile trovare eventuali bug della classe.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.