python-继承
python和Java的区别
1、java 多继承 Python是一个类可以继承N个类
2、pathon 单继承 Java只能继承一个类
关键字class
子类继承父类,继承了什么?
1.变量(数据属性) 2.实列属性 3.方法
方法1: super().__init__(name,age)
方法2: 父类名.__init__(self,name,age)
3.方法
方法重写:当父类的方法没有办法满足子类的需求的时候,子类就会重写父类的发,那么子类实例化后的对象调用该方法,优先考虑的是子类的方法
继承原则
(简单来说,从左到右、从上到下的实践方法其实也是遵循的MRO原理,是从mro中总结出来的,根本上的顺序就是mro的输出结果。说白了就是先找自己、再从左到右找(因为是线性查找,自己重写了父类的方法就从自己这儿找到了,自己没重写的话,就是从左到右找)。
原理
在Python中,基于MRO的解析顺序规则,就会从左到右开始查找基类,如果找到第一个匹配的属性类,就会停止查找,如果没有,那么就继续查找,直到查找到如何要求的为止。MRO其实就是通过一个C3线性化算法来实现的,它的核心思想为:
1、子类会优先于父类检查
2、多个父类会根据它们在列表中的顺序被依次检查(如下图mro输出的列表,也就是从左到右)
3、如果对下一个类存在两个合法的选择,只能选择第一
多态
多态的优势为:
增加了持续的灵活性
增加了持续的额外扩展的功能
举例
class A:
def show(self):
print('A')
class B(A):
pass
class C(A):
def show(self):
print('C')
class D(B,C):
pass
if __name__ == '__main__':
obj=D()
obj.show()
obj=d()
python2 执行结果a
python3 执行结果c
(就是在这里面找 而d里面包括b和c obj.show() 就是在b和c里面找这个show方法 show方法在c 所以是c)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!