От какого класса наследуются все типы в python?
Сегодня меня спросили от какого класса наследуются все типы в Python?
Я не долго думая ответил, что от object
На что мне ответили, что от object наследуются в Python2, а в Python3 от type.
Пришел домой. Решил проверить. И обнаружил интересный момент:
class R():
def __init__(self):
name = 'MyCl'
a = R()
print(isinstance(a, type)) # False
print(isinstance(a, object)) # True
print(R.__mro__) # (<class '__main__.R'>, <class 'object'>)
Почему так получается? И почему .mro не показывает <class 'type'>?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Можно просто проверить:
!python -V
print(int.__base__)
print(type.__base__)
print(object.__base__)
Вывод:
Python 3.10.0
<class 'object'>
<class 'object'>
None
Итак, в Pyhton 3.10 классы int и type - наследники object, при этом object не является ничьим наследником.
Так что всё как пишут в руководствах - в питоне всё наследуется от object рано или поздно, в том числе и type.