In Python 2.x, tutte le classi di nuovo stile ereditano da object
implicitamente o esplicitamente. Poi un'occhiata a questo:Vecchio stile, classi di nuovo stile e metaclassi
>>> 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'>
Significa questo A
è una classe di nuovo stile? Ma A
non eredita comunque da object
, giusto?
>>> type(B)
<class 'classobj'>
>>> type(b)
<type 'instance'>
OK, B
è una classe classico, non è vero?
>>> isinstance(A, object)
True
>>> isinstance(B, object)
True
perché sono istanze di entrambi A
e B
istanze di object
?
Se B
è un'istanza di object
, quindi type(B)
non sarebbe classobj
, giusto?
Tutto è un oggetto! – orlp
Non dovresti aver messo la cosa '__slots__' in questa domanda. È un'altra domanda completamente. –
@ChrisMorgan, sì, l'ho appena capito. – Alcott