Python中type和object的关系

作者: 戏之地 | 来源:发表于2016-12-06 16:04 被阅读335次

面向对象编程的两大关系

  • 继承关系:子类继承自父类,可以使用父类的一些方法和属性
  • 实现关系:以此类为模板实例化一个对象,即对象是类的一个实例


    继承和实现的区别

Python中一切都是对象

这句话的言外之意:类也是一个对象。那么既然类是一个对象,谁是它的类?我们都知道,一个对象肯定会有一个类模板

实例关系

上面我们说到。类也是一个对象,谁是它的类模板。
可以打印看看:

实例关系
补充一下:可以用.class来判断是哪个类的实例
>>> object.__class__
<class 'type'>

从上图可以看出:

  • 自定义类A的实例a的类模板就是自定义A
  • "string",1分别是类str和类int的实例
  • 自定义类A是类type的一个实例,有的同学可能会问了,类A明明继承object啊?注意,是继承,我们这里讨论是否实例的问题
  • 那所以类的基类object是谁的实例:type类的实例
  • 那type类是哪个类的实例:type类。也就是说,type类既是该类的一个实例,也是该实例的一个对象

总结:type这个类模板产生了一切实例

继承关系

继承关系就是类与类之间的关系,与对象无关,也不涉及任何实例


继承关系

从上面我们可以学到:

  • A继承自object,B继承自A,所以A·B的base分别是父类
  • str int等等内置类都是object的子类
  • object类是老大,所以它的父类为None
  • 可是type类的父类是object,object类不是type类的实例吗?
type和object的关系
图中A-->B代表A是B一个实例,C->D代表C是D的一个子类
即type类是type类的一个实例,object类是type类的一个实例,type类是object类的子类。像这种类,其实例化后的对象是类,这种类叫做元类,请移步小生的另一篇文章

相关文章

网友评论

    本文标题:Python中type和object的关系

    本文链接:https://www.haomeiwen.com/subject/lxermttx.html