7.6 Definizioni di classe

Una definizione di classe definisce un oggetto classe (vedere la sezione 3.2):

classdef  ::=  "class" classname [inheritance] ":" suite
inheritance  ::=  "(" [expression_list] ")"
classname  ::=  identifier
Potete scaricare il file originale (in Inglese) come testo.

Una definizione di classe è un'istruzione eseguibile. Prima valuta la lista ereditata, se presente. Ogni elemento nella lista ereditata dovrebbe valutare un oggetto classe o una classe tipo che ne permetta la derivazione. La suite delle classi viene quindi eseguita in una nuova cornice di esecuzione (vedere la sezione 4.1), usando un nuovo spazio dei nomi creato localmente e lo spazio dei nomi globale originale. (Di solito, la suite contiene solo le definizione delle funzioni.) Quando la suite delle classi finisce l'esecuzione, la sua cornice di esecuzione viene scaricata, ma viene salvato il suo spazio dei nomi locale. Una oggetto classe viene quindi creato usando la lista ereditata per le classi base e lo spazio locale dei nomi viene salvato per il dizionario degli attributi. Il nome della classe è legato a questa classe oggetto nello spazio dei nomi originale.

Nota per i programmatori: Le variabili definite nelle definizioni di classe sono variabili di classe; vengono condivise da tutte le istanze. Per definire le variabili istanza, deve essere specificato un valore nel metodo __init__() o in un altro metodo. Sia la classe che la variabile istanza sono accessibili attraverso la notazione ``self.name'' ed una variabile istanza nasconde una variabile di classe con lo stesso nome quando vi si accede in questo modo. Le variabili di classe con valori immutabili possono essere usate come predefinite per variabili istanza. Per le classi di nuovo stile, i descrittori possono essere usati per creare variabili d'istanza con differenti dettagli d'implementazione.

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