Python中类的继承如何理解,有哪些要点
Admin 2022-08-09 群英技术资讯 449 次浏览
继承的主要作用是实现代码的重用。继承使得子类拥有父类的方法和属性。
直接来看一个例子吧。
class animal: def eat(self): print("吃") def drink(self): print("喝") class dog(animal): def dark(self): print("汪汪叫") goudan = dog() goudan.eat() goudan.drink()
从上面的代码可以看出,在编写dog类的时候,我们并没有重写eat和drink两个方法。我们只需要在dog后面的括号中加上父类的名字即可。当子类继承了父类,子类就可以直接使用父类中的方法了。在本例中,goudan可以直接使用animal类中的eat和drink两个方法。
而且一个神奇的事情是,继承是具有传递性的。子类拥有父类的方法和属性,同时也具有父类的父类所具有的属性。
有时候,父类中的方法并不能完成满足子类的需求。这时候我们就需要方法重写了。子类方法重写一般有两种情况:
一种简单的方法是直接重写相应的方法。下面这个例子就是重写了drink这个方法。当使用goudan调用drink这个方法方法时,结果并不是喝而是拿舌头喝水。
class animal: def eat(self): print("吃") def drink(self): print("喝") class dog(animal): def drink(self): print("拿舌头喝水") def dark(self): print("汪汪叫") goudan = dog() goudan.eat() goudan.drink()
当我们的需求不是简单的覆盖父类中的方法,而是在父类方法的基础上对方法进行扩展。具体的做法是:
我们来看一个例子,此时goudan在调用drink方法的时候,会输出喝和拿舌头喝水两个输出。
class animal: def eat(self): print("吃") def drink(self): print("喝") class dog(animal): def drink(self): # 1. 根据子类的需求编写特定的代码 print("拿舌头喝水") # 2. 使用super继承父类中的fangfa super().drink def dark(self): print("汪汪叫") goudan = dog() goudan.eat() goudan.drink()
对于Python而言,一个子类可以有多个父类。多继承的基本语法是比较简单的。话不多说,直接看一个例子
class A(): def test(self): print("test") class B(): def demo(self): print("demo") class C(A,B): pass c = C() c.test() c.demo()
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在NumPy中,矩阵是ndarray的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat 、 matrix 以及 bmat 函数来创建矩阵。本文将详细讲解NumPy中矩阵和通用函数的使用,感兴趣的可以了解一下
这篇文章主要介绍了解决Python保存文件名太长OSError: [Errno 36] File name too lon问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
本文主要介绍了python中SSH远程登录设备,python中支持SSH协议的模块主要有Paramiko和netmiko两种,本文主要介绍了netmiko模块,具有一定的参考价值,感兴趣的可以了解一下
在数据分析的过程中通常要对数据进行清洗与处理,而其中比较重要和常见的操作就有对数据进行筛选与查询,下面这篇文章主要给大家介绍了关于python使用pandas实现筛选功能方式的相关资料,需要的朋友可以参考下
api接口在我们开发中的重要性相信大家都这篇文章主要给大家介绍了关于利用python写api接口实战的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008