new-style class のことを調べていていまごろ気づいて、ちょっとびびったのでメモ。
それは、classic class のインスタンスの型は、それが属するクラスではないということ。
>>> class Foo: pass ... >>> type(Foo()) == Foo False
もちろん、__class__ 属性のほうとは一致する(つか、しなかったらホラーだ(^_^;))。
>>> Foo().__class__ == Foo
True
ちなみに、new-style class ではそうしたある種の二重構造は解消されている。
>>> class Bar(object): pass ... >>> type(Bar()) == Bar True
なるほどこれが段階的に進められている“型とクラスの統合”なのかと合点がいった瞬間。