Python 2.xでは、すべての新しいスタイルのクラスは暗黙的にまたは明示的にobject
から継承されます。そして、これを見て:古いスタイルのクラス、新しいスタイルのクラスとメタクラス
>>> 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'>
OK、B
は古典的なクラスですか?
>>> isinstance(A, object)
True
>>> isinstance(B, object)
True
はなぜobject
の両方A
とB
インスタンスのインスタンスでありますか?
がobject
のインスタンスの場合、type(B)
はclassobj
になりません。
何かがオブジェクトです! – orlp
この質問に '__slots__'を置いてはいけません。それはまったく別の質問です。 –
@ChrisMorgan、はい、私はそれを実現しました。 – Alcott