In Python 2.x erben alle Klassen im neuen Stil implizit oder explizit von object
. Dann folgt aussehen auf:Klassen im alten Stil, Klassen im neuen Stil und Metaklassen
>>> 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'>
diese A
bedeutet das ist ein neuer Stil-Klasse? Aber A
erbt nicht von object
sowieso, oder?
>>> type(B)
<class 'classobj'>
>>> type(b)
<type 'instance'>
OK, ist B
eine klassische Klasse, ist es nicht?
>>> isinstance(A, object)
True
>>> isinstance(B, object)
True
warum sind Instanzen sowohl A
und B
Instanzen von object
?
Wenn B
eine Instanz von object
ist, dann wäre type(B)
nicht classobj
, richtig?
Alles ist ein Objekt! – orlp
Sie sollten die "__slots__" Sache in dieser Frage nicht gestellt haben. Es ist eine ganz andere Frage. –
@ChrisMorgan, ja, das habe ich gerade gemerkt. – Alcott