类的继承
为什么要继承?
提高代码的重用性,减少冗余
继承分哪两种?
单继承:在py3版本,所有的类是新式类,继承的最底层类是object,如果不写object,会默认你的父类(超类,基类)是object
class A(类的名字B): pass
A就是B的父类
A就是子类,python类
B就是超类,基类,父类
在py2版本,所有的类是经典类,继承的最底层类不是object,如果不写object,就是经典类,写了就会变成经典类
多继承:在py3中,子类调用父类根据mro算法找
# class Parent1: # pass # class Parent2: # pass # # class Son(Parent1,Parent2): # pass # # print(Son.__bases__)
在py2中,子类调用父类根据深度优先寻找
子类单独拥有的属性叫派生属性,子类单独拥有的方法叫派生方法
2.如果子类没有init方法,那么到父类去寻找,如果没有就报错
3.如果子类有init方法,就用自己的但是得这么写
super().__init__(参数一,参数二....)
父类名.__init__(self,参数一,参数二....)
还有一种不建议,如下
super(子类,self).__init__(参数一,参数二)
class Cat(Animal): def __init__(self,kind,name,eyes) self.eyes = eyes #派生属性 #super().__init__(kind,name) #Animal.__init__(self,kind,name) def eat(self): #派生方法 pass