Нам нужно отличить подклассы от реализации.Точные правила могут различаться в зависимости от языка, но в 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'>)