type это метакласс, который Питон внутренне использует для создания всех классов.
Когда вы пишете:
class Foo(Bar):
passПитон делает следующее:
- Есть ли у класса
Foo атрибут __metaclass__?- Если да, создаёт в памяти объект-класс с именем Foo, используя то, что указано в
__metaclass__.- Если Питон не находит metaclass, он ищет
__metaclass__ в родительском классе Bar и попробует сделать то же самое.- Если же
__metaclass__ не находится ни в одном из родителей, Питон будет искать __metaclass__ на уровне модуля.- И если он не может найти вообще ни одного
__metaclass__, он использует type для создания объекта-класса.@python_job_interview