3.3.3 Personalizzare la creazione delle classi

Per definizione, le classi di nuovo stile vengono costruite usando type(). Una definizione di classe viene letta in uno spazio dei nomi separato ed il nome della classe viene collegato al risultato di type(name, bases, dict).

Durante la lettura della definizione di classe, se è stata definita __metaclass__, allora la funzione di chiamata attribuitagli verrà chiamata al posto di type(). Le classi permesse o le funzioni scritte che controllano o alterano il processo di creazione della classe:

__metaclass__
Questa variabile può essere qualunque funzione chiamabile che accetti gli argomenti name, bases e dict. Sulla creazione della classe, la funzione chiamabile viene usata al posto della funzione built-in type(). Nuovo nella versione 2.2.

La metaclasse appropriata viene determinata in base alle seguenti regole di precedenza:

I potenziali utilizzi delle metaclassi sono illimitati. Sono state esaminate varie idee compresi sistemi di registrazione (logging), controllo di interfaccia, automatizzazione di deleghe, creazione automatica di proprietà, proxy, framework e sincronizzazione/locking di risorse.

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