Тип Python 3 является одновременно объектом и классом? - PullRequest
0 голосов
/ 20 сентября 2018

Я читаю Обучение Python .Что касается метакласса, в книге сказано, что тип - это объект, а также сам класс.Я пытаюсь найти Python Doc в Интернете, но не вижу похожего описания.Может кто-нибудь указать мне какой-нибудь официальный документ?

Подумав немного больше об этом утверждении, что тип является и объектом, и классом, я думаю, что это имеет смысл.

Причины следующие.

  1. тип вызывается, видя type () .Тогда это должна быть либо функция, либо объект, который реализовал вызов
  2. , любой объект был создан из класса.Учитывая, что он находится в верхней иерархии, имеет смысл, что его класс сам по себе.

Мой второй вопрос заключается в том, что метакласс является подклассом класса типа?Правда ли, что метакласс также является экземпляром типа объект / класс?Поскольку при вызове метакласса (...) введите. call , тогда метакласс должен быть экземпляром типа

1 Ответ

0 голосов
/ 20 сентября 2018

Даже будучи вызванным, type имеет два совершенно разных применения.type с одним параметром возвращает класс объекта, а type с 3 аргументами создает новый класс, который сам является объектом класса type.

Конечно, по этой логике type сам может быть экземпляром другого класса, а этот класс - экземпляром другого класса.Но это должно было где-то остановиться.Выбор дизайна заключается в том, что он останавливается на достигнутом.Мета-метакласса нет.type(type) возвращает type.Это волшебство, в том смысле, что оно не следует ни из каких логических правил, оно просто специально реализовано.

...