Python 3.x, `type` сам по себе происходит от` object`, а `object` происходит от` type` - PullRequest
0 голосов
/ 12 октября 2018

В настоящее время я изучаю модель ООП Python, и мне сказали, что

type само по себе происходит от object, а object происходит от type

Я понимаю, что object является суперклассом по умолчанию для каждого класса в Python 3.x, а класс type используется для создания классов (то есть объекта класса).object и type вместе (как-то) образуют основы Python ООП, но я все еще запутался в высказывании выше.

Может ли кто-нибудь предоставить подробное объяснение взаимосвязи между object и type и ролей, которые они играют в Python OOP.Спасибо

1 Ответ

0 голосов
/ 12 октября 2018

Нам нужно отличить подклассы от реализации.Точные правила могут различаться в зависимости от языка, но в Python 3.x -

Все классы являются подклассами из object (ну, кроме самого object).object является корнем иерархии классов.

Класс type является подклассом из object.

Все объекты являются экземплярами класса.

Классы сами являются объектами.(Это не верно для каждого языка.)

Объекты класса, будучи объектами, являются экземплярами класса - объекты класса являются экземплярами класса type (метакласс по умолчанию).

Да, type - это класс и объект, и это экземпляр из type.type имеет класс type.

Да, object - это класс и объект, и это экземпляр из type.object имеет класс type.

Вы можете увидеть класс объекта, используя .__class__ или type() на нем.Вы можете увидеть суперклассы класса, используя .__mro__ (порядок разрешения методов).

>>> type(object)
<class 'type'>
>>> type(type)
<class 'type'>
>>> object.__mro__
(<class 'object'>,)
>>> type.__mro__
(<class 'type'>, <class 'object'>)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...