当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。
继承有什么好处?最大的好处是子类获得了父类的全部功能。
# class Ww(object): #创建一个父类 # def __init__(self,name,kk): # self.name=name # self.kk=kk # def print1(self): # print(self.name,self.kk) # class Ss(Ww): #创建一个子类,这个子类的父类是Ww # pass # class Dd(Ww): # def print1(self): #子类与父类函数同名时,子类的方法会覆盖父类的方法 # print(self.kk) # dd=Dd('wang',15)#调用子类Dd ,其属性是父类的属性 # dd.print1() # ss=Ss('ll',153)#调用子类Ss ,其属性是父类的属性 # ss.print1()#调用父类中的方法
多态
新增一个Animal
的子类,不必对run_twice()
做任何修改,实际上,任何依赖Animal
作为参数的函数或者方法都可以不加修改地正常运行,原因就在于多态。
动态语言的“鸭子类型”,它并不要求严格的继承体系,一个对象只要“看起来像鸭子,走起路来像鸭子”,那它就可以被看做是鸭子。
小结
继承可以把父类的所有功能都直接拿过来,这样就不必重零做起,子类只需要新增自己特有的方法,也可以把父类不适合的方法覆盖重写。