关于Python的类型和对象,有些像鸡和蛋的关系。为什么这样说呢?在这之前我们来看下对象的两个属性:__class__, __bases__
>>> object.__class__
<type 'type'>
>>> type.__class__
<type 'type'>
>>> object.__bases__
()
>>> type.__bases__
(<type 'object'>,)
__class__ 属性返回当前对象的类型(或者实例的类型),__bases__ 返回当前对象的父类。在上面的例子中:
object 的类型是type, type的类型也是type, 这就是先有类型,然后才生成实例化对象。
object 没有父类(或者说是它本身),因为它是一切对象的基类;type 的父类是object。
实际上,对象的__class__ 属性,就相当于调用了type()函数,或者说,type() 函数返回了对象的 __class__ 属性。
>>> a = 2
>>> a.__class__
<type 'int'>
>>> type(a)
<type 'int'>