在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'>
好的,B
是一个经典类,对吗?
>>> isinstance(A, object)
True
>>> isinstance(B, object)
True
为什么
A
和B
实例都是object
的实例?如果
B
是object
的一个实例,那么type(B)
不应该是classobj
,对吗?
__slots__
。那是另一个完全不同的问题。 - Chris Morgantype
。旧式类使用types.ClassType
。 - jamylakA
没有继承自object
,但我仍然在A
中使用了__metaclass__
,这样可以吗?因为我认为,__metaclass__
只能用于继承自object
的类,对吗? - Alcott__metaclass__
在每个类中都被使用。每个类都有一个元类来构造它。 - jamylak