Order of operations when instantiating classes
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.
Finding the metaclass
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
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 ...
Get Python: Journey from Novice to Expert now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.