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:
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:
dict['__metaclass__']
viene usato questo.
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.