Визначення відповідного метакласу

Оновлено: 28.04.2023

Відповідний метаклас для визначення класу визначається таким чином:

якщо не вказано жодних баз і явного метакласу, то використовується type(); якщо задано явний метаклас і він не є екземпляром type(), тоді він використовується безпосередньо як метаклас; якщо екземпляр type() задано як явний метаклас або визначено основи, то використовується найбільш похідний метаклас.

Найбільш похідний метаклас вибирається з явно визначеного метакласу (якщо такий є) і метакласів (тобто type(cls)) усіх указаних базових класів. Найбільш похідним метакласом є той, який є підтипом усіх цих метакласів-кандидатів. Якщо жоден із метакласів-кандидатів не відповідає цьому критерію, визначення класу буде невдалим із TypeError.