Una definizione di classe definisce un oggetto classe (vedere la sezione 3.2):
classdef |
::= | "class" classname [inheritance] ":"
suite |
inheritance |
::= | "(" [expression_list] ")" |
classname |
::= | identifier |
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.