继承
在程序中,继承描述的是事物之间的所属关系,例如猫和狗都属于动物,程序中便可以描述为猫和狗继承自动物;同理,波斯猫和巴厘猫都继承自猫,而沙皮狗和斑点狗都继承足够,如下如所示:
定义一个父类Animal:
再定义一个子类的Dog继承父类Animal:
子类在继承的时候,在定义类时,小括号()中为父类的名字
父类的属性、方法,会被继承给子类
虽然子类没有定义init方法,但是父类有,所以在子类继承父类的时候这个方法就被继承了,所以只要创建子类的对象,就默认执行了那个继承过来的init方法
多继承
所谓多继承,即子类有多个父类,并且具有它们的特征
如图子类分别继承两个不同父类的方法
不过在父类A和父类B中有一个同名的方法,那么通过子类调用的时候调用的是写在子类小括号中的从左往右的顺序识别的。
你也可以用(子类.__mro__)来检验对象搜索方法时的先后顺序
调用
所谓重写,就是子类中,有一个和父类相同名字的方法,在子类中的方法会覆盖掉父类中同名的方法
调用父类有三种方法:
#father.__init__(self,name) #方法1
#super(Son,self).__init__(name) #子类调用父类的方法
super().__init__(name) # 方法3