В Python 2.x все классы нового стиля наследуются от объекта
явно или неявно. Затем посмотрите на это:
>>> class M(type):
... pass
...
>>> class A:
... __metaclass__ = M
...
>>> class B:
... pass
...
>>> a = A()
>>> b = B()
>>> type(A)
<class '__main__.M'>
>>> type(a)
<class '__main__.A'>
Означает ли это, что A
является классом нового стиля? Но A
в любом случае не наследуется от object
, верно?
>>> type(B)
<class 'classobj'>
>>> type(b)
<type 'instance'>
Хорошо, B
— классический класс, не так ли?
>>> isinstance(A, object)
True
>>> isinstance(B, object)
True
почему экземпляры A
и B
являются экземплярами object
?
Если B
является экземпляром object
, то type(B)
не будет classobj
, верно?