当前位置: 首页 > 科技观察

一篇文章带你了解Python中的继承和多态

时间:2023-03-17 20:56:43 科技观察

一、继承简介继承是一种创建新类的方式。新创建的类称为子类,继承的类称为父类、超类和基类。种类。继承的特点是子类可以使用父类的属性(特性、技能)。继承是类之间的关系。继承可以减少代码冗余并提高可重用性。在现实生活中,继承一般是指子女继承父母的财产,如下图所示:2、如何使用继承?1、继承语法ClassDerived类名(基类名):#基类名写在括号中。在继承关系中,现有的和设计的类称为父类或基类,新设计的类称为子类或派生类。派生类可以继承父类的公共成员,但不能继承其私有成员。2.继承的特点在继承中,基类的构造函数(init()方法)不会被自动调用,需要在其派生类的构造中专门调用。如果需要在派生类中调用基类的方法,使用“基类名.方法名()”的方法,需要加上基类的类名前缀,需要带上自参数变量。不同的是,调用类中的普通函数时,不需要带上self参数。为此,您还可以使用内置函数super()。Python总是先寻找对应类型的方法。如果在派生类中找不到对应的方法,则开始在基类中一个一个地查找(先查找本类中调用的方法,找不到再到基类中查找)。3.单继承3.1单继承例子:classAnimal:#parentclassdefeat(self):print("-----eat-----")defdrink(self):print("-----drink-----")classDog(Animal):#子类继承父类"""defeat(self):print("-----eat-----")defdrink(self):print("-----Drink-----")"""passclassCat:passwang_cai=Dog()wang_cai.eat()wang_cai.drink()运行结果:3.2多层继承示例:classAnimal:defeat(self):print("-----eat-----")defdrink(self):print("-----drink-----")classDog(Animal):defbark(self):print("-----Wowbarking------")classXTQ(Dog):"""定义一个咆哮的狗类"""passclassCat(Animal):defcatch(self):print("----抓老鼠----")xtq=XTQ()xtq.eat()xtq.bark()运行结果:3.3重写父类方法示例:classAnimal:#parentclassdefeat(self):print("-----Eat-----")defdrink(self):print("-----drink-----")classDog(Animal):defbark(self):print("-----bark------")classXTQ(Dog):#重写Dog方法"""定义一个咆哮的狗类"""defbark(self):print("----呵呵呵呵-----")classCat(Animal):defcatch(self):print("----捉老鼠----")xtq=XTQ()xtq.eat()xtq.bark()运行结果:4.多重继承4.1多重继承从图中可以看出,所谓多重继承,就是子类有多个父类,具有各自的特点。Python中多重继承的格式如下:#定义一个父类classA:defprintA(self):print('----A----')#定义一个父类classB:defprintB(self):print('----B----')#定义一个子类,继承自A,BclassC(A,B):defprintC(self):print('----C----')obj_C=C()obj_C.printA()obj_C.printB()运行结果:----A--------B----Python中可以多继承,父类中的方法和属性类将被子类继承。想一想:如果在上面的多重继承例子中,如果父类A和父类B中有同名方法,那么通过子类调用时,应该调用哪个?#coding=utf-8classbase(object):deftest(self):print('----basetest----')classA(base):deftest(self):print('----Atest----')#定义父类classclassB(base):deftest(self):print('----Btest----')#定义一个继承自A和B的子类classC(A,B):passobj_C=C()obj_C.test()print(C.__mro__)#可以依次查看类C的对象查找方法的运行结果:5、多态性5.1什么是多态性?多态性的概念应用于强类型语言,如Java和C#。另一方面,Python提倡“鸭子打字”。所谓多态:定义时的类型和运行时的类型不同,此时就变成了多态。Python伪代码在Java或C#中实现多态性。5.2案例Python“DuckType”(duck):duck.quack()duck=Duck()bird=Bird()doge=Doge()forxin[duck,bird,doge]:in_the_forest(x)运行结果:3.总结生活中的基本现象作为一个切入点,主要介绍了Python基础中的继承和多态,包括单继承和多继承的语法,多态的常见“鸭子式”,以及如何重写父类的方法。用丰富的案例帮助大家更好的理解,用Python编程语言方便大家更好的理解。希望对大家的学习有所帮助。