Python子类方法重写

Python子类方法重写教程

Python 中,如果子类 继承 了父类,那么子类会继承父类所有的 方法属性,此时,如果子类重新定义了父类中的方法,那么就构成了方法重写,即子类方法重写了父类方法。

如果,我们在子类中需要调用父类中被重写的方法,那么我们可以直接使用类名来显式调用父类中的方法。

Python子类复写父类方法条件

子类复写父类方法,必须要子类方法的函数名和 函数参数 与父类的一模一样,如果子类的方法名和父类一致,但参数不一致,那么不构成方法重写,而是方法覆盖。

案例

Python子类复写父类方法

子类方法名和参数与父类完全一致,构成方法重写

print("嗨客网(www.haicoder.net)") class Animal: def eat(self): print("I like eat anything") def sleep(self): print("I need sleep for 15 hours a day") class Cat(Animal): def eat(self): print("I am a cat, and i just like eat finish") class Dog(Animal): def eat(self): print("I am a dog, and i just like eat bone") cat = Cat() cat.eat() cat.sleep() dog = Dog() dog.eat() dog.sleep()

程序运行后,控制台输出如下:

82_python类方法重写.png

我们定义了一个 Animal 类,Animal 类有两个方法,一个是 eat,一个是 sleep,接着,我们定义了一个 Cat 类,Cat 继承自 Animal,Cat 类也有一个与 Animal 类一模一样的方法 eat,Dog 类也有一个与 Animal 类一模一样的方法 eat。

因为,Cat 类的 eat 方法和 Dog 类的 eat 方法与它们的父类 Animal 的函数名与参数一模一样,因此子类 Cat 和 Dog 重写了父类 Animal 的 eat 方法。

接着,我们分别实例化了一个 Cat 类和一个 Dog 类,分别调用了 Cat 类的 eat 方法和 sleep 方法,以及 Dog 类的 eat 方法和 sleep 方法,我们发现,Cat 类和 Dog 类都各自输出了自己类中的 eat 方法的内容。

因此,子类继承了父类,并且子类的方法与父类的方法的函数名与函数参数一模一样,因此,子类的方法重写了父类的方法。

Python子类调用父类被重写方法

在子类中,通过类名可以显式调用父类被重写方法

print("嗨客网(www.haicoder.net)") class Animal: def eat(self): print("I like eat anything") def sleep(self): print("I need sleep for 15 hours a day") class Cat(Animal): def eat(self): print("I am a cat, and i just like eat finish") def eat_delicious(self): print("when i was a child") self.eat() print("when i grown up") Animal.eat(self) cat = Cat() cat.eat_delicious() cat.sleep()

程序运行后,控制台输出如下:

83_python类方法重写.png

我们定义了一个 Animal 类,Animal 类有两个方法,一个是 eat,一个是 sleep,接着,我们定义了一个 Cat 类,Cat 继承自 Animal,Cat 类也有一个与 Animal 类一模一样的方法 eat。

同时,我们在 Cat 类中定义了一个 eat_delicious 方法,eat_delicious 中,我们首先使用 self 迪奥了 eat 方法,再次使用 Animal. 的形式再次调用了 eat 方法。

最后,我们发现,使用 self 调用 eat 方法调用的就是 Cat 类自身的 eat 方法,而使用 Animal. 的形式调用的 eat 方法,调用的是 Cat 的父类 Animal 的 eat 方法。

因此,如果,我们需要显式调用父类被重写的方法,可以使用类名的形式来调用。

Python子类方法重写总结

在 Python 中,如果子类继承了父类,那么子类会继承父类所有的方法和属性,此时,如果子类重新定义了父类中的方法,那么就构成了方法重写,即子类方法重写了父类方法。

如果,我们在子类中需要调用父类中被重写的方法,那么我们可以直接使用类名来显式调用父类中的方法。Python 子类复写父类方法条件:

子类复写父类方法,必须要子类方法的函数名和函数参数与父类的一模一样,如果子类的方法名和父类一致,但参数不一致,那么不构成方法重写,而是方法覆盖。