Типы и классы в Python

Я немного запутался в типах и классах в 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__'
  1. Почему тип и класс для встроенных вещей (например, список здесь) одинаковые, но разные для пользовательских классов / типов?
  2. Разве каждый класс не является экземпляром какого-то другого класса? (например, класс в Java)? Почему нет __ class __ для классов, определяемых пользователем?

Любое объяснение / дополнительное чтение, которое может прояснить это поведение, было бы очень признательно. TIA.

18
задан sasuke 18 December 2010 в 19:46
поделиться