当前位置: Python基础教程 > 07-面向对象a > 阅读正文

python方法的重写

2021.6.21.   427 次   760字

方法的重写, 指的是在子类继承父类时, 子类可以对父类的方法进行重写

重写, 也叫覆盖, 更通用的说法是, 覆盖重写

应用场景是, 当继承的方法已经不能满足时, 或逻辑发送改变

简单的重写覆盖实例

class Animal:

    def eat(self):
        print("吃")

    def drink(self):
        print("喝")

    def run(self):
        print("跑")

    def sleep(self):
        print("睡")

class Dog(Animal):

    def eat(self):    #对原方法进行了重写覆盖
        print("吃骨头")

wangcai = Dog()  #创建一个dog对象

wangcai.eat()   #dog类覆盖后的方法

重写的方式, 是在子类定义一个同名的方法, 那么再调用时默认使用子类重写后的方法

扩展重写实例

此外, 还有一种扩展重写的说法, 但这并不准确, 它本质是调用了父类被覆盖的方法

我们可以在重写时, 既保留父类方法的代码, 又增添一些, 这里需要用到super关键字

class Animal:

    def eat(self):
        print("吃")

    def drink(self):
        print("喝")

    def run(self):
        print("跑")

    def sleep(self):
        print("睡")

class Dog(Animal):

    def eat(self):    #对原方法进行了重写覆盖
        super().eat()   #保留父类的eat, 并进行扩展
        print("吃骨头")

wangcai = Dog()  #创建一个dog对象

wangcai.eat()   #dog类覆盖后的方法

super()表示父类对象, super().xxx 这是python3特有的方式, 它会按照继承链, 按顺找到最近的属性或方法

ps: 对于py2版本, 使用 父类名.方法(self) 方式调用父类方法, py3仍支持, 但不推荐

本篇完,还有疑问?

加入QQ交流群:11500065636 IT 技术交流群