|
Le classi contengono una serie di funzioni che vengono normalmente detti metodi. Anche il costruttore è un metodo. Il nome "metodo" viene dal fatto che le operazioni vengono effettuate sui valori interni della istanza, ovvero sono metodi per operare sull'oggetto, le cioè le operazioni dell'oggetto.
Alcuni linguaggi permettono l'accesso implicito ai campi della classe, ma non Python: per accedere ai campi si passa sempre attraverso una variabile, che è un namespace, e i cui attributi sono appunto i campi della classe. Convenzione universalmente seguita vuole che la variabile per l'accesso all'oggetto si chiami sempre self.
I meccanismi del linguaggio fanno sì che venga sempre passato come primo argomento il riferimento all'istanza a cui che si sta accedendo.
>>> x = Num()
>>> x
<__main__.Num instance at 0x815fdcc>
La prima chiamata crea l'istanza. Il meccanimo fa si che venga allocata la memoria per memorizzare i campi dell'istanza, e poi viene chiamato __init__ per completare la sua inizializzazione.
Possiamo vedere adesso i risultati:
>>> x.n
0
>>> x.inc(7)
7
>>> x.n
7
Per prima cosa possiamo accedere ai campi, e vederne il valore. Poi chiamiamo un metodo. In questo caso viene passato l'oggetto stesso come primo argomento della chiamata del metodo, ed attraverso questo si accede ai campi.
Vediamo adesso in dettaglio il costruttore.
Come abbiamo detto, il metodo speciale __init__ inizializza i campi quando viene creata l'istanza. In particolare, viene chiamata dopo che sono stati inizializzati i campi con inizializzazioni esplicite.
Eventualmente, nuovi campi possono essere creati assegnandoli direttamente tramite self.
|