04 Python的继承方法重写super()类

Posted scopicat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了04 Python的继承方法重写super()类相关的知识,希望对你有一定的参考价值。

继承

A类继承B类,A即可获得B类的全部公共属性和方法。格式如:class A(B):

class Animal:
    def sleep(self):
        print("zZZ...")

    def eat(self):
        print("yamiyami...")

    def run(self):
        print("huchihuchi...")


class Dog(Animal): #Dog类拥有sleep,eat,run,bark四个方法
    def bark(self):
        print("汪汪汪") 

 

方法重写

子类有时需要对继承自父类的方法进行修改或重写,这时直接定义一个与需要重写的方法名一样的方法即可,如(接上面的代码):

class xiaotianquan(Dog):
    def fly(self):
        print("我在飞")
    #重写继承自父类的bark()方法
    def bark(self):
        print("我在叫!我在叫!")

  

父类方法扩展

有时仅需对父类方法进行扩展无需完全重写,只需在重写方法时加上super().父类方法 即可:

class xiaotianquan(Dog):
    #扩展继承自父类的bark()方法
    def bark(self):
        #继承父类的方法
        super().bark() #此时super()即代表父类(此时的父类为Dog)
        #需要拓展的代码
        print("我在叫!我在叫!")

  super类是一个特殊的类,super()代表着一个super类的实例

Python2.x版本调用父类方法(了解,不推荐)

在Python2.x版本中,子类重写或拓展父类方法时,不是使用super()调用,而是使用:父类名.父类方法(self) #注意,self不能省略

class xiaotianquan(Dog):
    #扩展继承自父类的bark()方法
    def bark(self):
        #继承父类的方法
        Dog.bark(self) #self不能省略
        #需要拓展的代码
        print("我在叫!我在叫!")

  注意:super().方法名 与 父类名.方法名(self),开发中不能混用,只能使用一种,且推荐super().方法名这种

以上是关于04 Python的继承方法重写super()类的主要内容,如果未能解决你的问题,请参考以下文章

29.Python面向对象类:主要讲初始化方法__init__,垃圾回收,继承&多继承,方法重写,super()函数

29.Python面向对象类:主要讲初始化方法__init__,垃圾回收,继承&多继承,方法重写,super()函数

python中的super()用法以及多继承协同任务

检测继承性,super的用法,方法的重写等

继承,super关键字,方法重写,final关键字

python语言中多继承中super调用所有父类的方法以及要用到的MRO顺序