На данный момент я понимаю, что каждый класс (кроме объекта) наследуется от базового класса, называемого объектом. Но каждый класс (включая объект) также является экземпляром типа класса, который является экземпляром самого себя и объекта, а также наследуется от объекта.
Мои вопросы:
- Есть ли причина/проектное решение, почему возражать< /code> является экземпляром типа, а тип наследуется от объекта? Может ли тип/класс объекта быть самим объектом?
- Как может класс (type) быть экземпляром самого себя?
- Какой из них настоящий объект базового класса или тип?
Я всегда думал, что объект< /code> был бы самым «фундаментальным» классом, но, похоже, это экземпляр типа, который является экземпляром объекта, который является экземпляром типа, .. .
Где заканчивается эта рекурсия? - Есть ли возможность проиллюстрировать связь между объектом и классом типа?
Каждый класс (кроме объекта) наследуется от объекта.
>>> for x in object, int, float, str, list, dict:
... print(f'{x.__name__:6}: {x.__bases__}')
...
object: ()
int : (,)
float : (,)
str : (,)
list : (,)
dict : (,)
Каждый класс является экземпляром типа класса.
>>> for x in object, int, float, str, list, dict:
... print(f'{x.__name__:6}: {x.__class__}')
...
object:
int :
float :
str :
list :
dict :
type является экземпляром самого себя.
>>> type.__class__
type также наследуется от объекта.
>>> type.__bases__
(,)
Также
>>> isinstance(object, type)
True
>>> isinstance(type, object)
True
>>> isinstance(type, type)
True
>>> isinstance(object, object)
True
>>> issubclass(type, object)
True
>>> issubclass(object, type)
False
Подробнее здесь: https://stackoverflow.com/questions/557 ... -of-object