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