python中一切皆对象,type和object都是python原生的,内部的,固有的,最初始的两个,对象(since python2.2...)
type是究极class,所有对象的究极class(或者说究极类型)都是type,所以任何对象的__class__最终都会返回type,包括object,即 object.__class__ 返回type。 同时,type本身是自己的class(自己的类型),即 type.__class__ 返回type。
(type其实就是class,可以做两方面的理解:object是究极base,所有对象的究极父类都是object,所以任何对象的__bases__最终都会返回object,包括type,即 type.__bases__ 返回object。但是,object自己本身没有base,即object.__bases__ 返回 空。
isinstance(type,object) == True
isinstance(object,type) == True
因为object是究极base,type就是object的subclass,所以第一个是真如果通过以type作为base创建一个新的对象,那这个对象既是type的子类,也是type的实例。
定义一个类,可以通过使用 "()"给其指定base,也可以通过 __metaclass__指定type。base和type这两个object针对新的这个类,type调用它的 __new__方法,用来产生并返回一个实例(此处的实例就是这个类,其实质是调用了type的__new__方法), base调用它的__init__用来为新产生的实例填充属性。