-
Book Overview & Buying
-
Table Of Contents
Mastering Python
By :
The order of operations during class instantiation is very important to keep in mind when debugging issues with dynamically created and/or modified classes. The instantiation of a class happens in the following order.
The metaclass comes from either the explicitly given metaclass on the class or bases, or by using the default type metaclass.
For every class, the class itself and the bases, the first matching of the following will be used:
Explicitly given metaclass
Explicit metaclass from bases
type()
Note that if no metaclass is found that is a subtype of all the candidate metaclasses, a TypeError will be raised. This scenario is not that likely to occur but certainly a possibility when using multiple inheritance/mixins with metaclasses.
The class namespace is prepared through the metaclass selected previously. If the metaclass has a __prepare__ method, it will be called namespace = metaclass.__prepare__...