面向对象编程的两大关系
- 继承关系:子类继承自父类,可以使用父类的一些方法和属性
-
实现关系:以此类为模板实例化一个对象,即对象是类的一个实例
继承和实现的区别
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类的实例吗?

图中A-->B代表A是B一个实例,C->D代表C是D的一个子类
即type类是type类的一个实例,object类是type类的一个实例,type类是object类的子类。像这种类,其实例化后的对象是类,这种类叫做元类,请移步小生的另一篇文章
网友评论