Я немного смущен о типах и классах в Python. Напр. следующий диалог REPL меня смущает:
>>> class A: pass
...
>>> a = A()
>>> type(a)
<type 'instance'>
>>> a.__class__
<class __main__.A at 0xb770756c>
>>> type([])
<type 'list'>
>>> [].__class__
<type 'list'>
>>> type(list)
<type 'type'>
>>> list.__class__
<type 'type'>
>>> type(A)
<type 'classobj'>
>>> A.__class__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class A has no attribute '__class__'
- Почему тип и класс встроенных объектов (например, список здесь) одинаковые, но разные для пользовательских классов/типов?
- Разве не каждый класс является экземпляром какого-либо другого класса (например, класса в Java)? Почему нет
__class__
для пользовательских классов?
Любое объяснение/дальнейшее чтение, которое может прояснить это поведение, будет высоко оценено. ТИА.