python之多继承中的一些问题
时间:2022-07-23
本文章向大家介绍python之多继承中的一些问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
python与Java不同,是支持多继承的。这里的多继承指的的是多重继承,即一个子类可以同时继承多个父类。而多层继承就是一层一层的继承,比如A继承B,Bj继承C等。直接看代码:
多重继承:
class A:
def testA(self):
print("这是父类A的test方法")
class B:
def testB(self):
print("这是父类B的test方法")
class C(A,B):
def myTest(self):
print("这是子类自己的方法")
c = C()
c.testA()
c.testB()
通过class 子类名(父类名1,父类名2,...)来进行多重继承。子类可以同时有其父类的所有公有属性和方法。
既然python中存在多重继承,为什么Java中不可以有多重继承呢?
因为多重继承存在一些问题。现有以下代码:
class A:
def test(self):
print("这是父类A的test方法")
class B:
def test(self):
print("这是父类B的test方法")
class C(A,B):
def myTest(self):
print("这是子类自己的方法")
c = C()
c.test()
当多重继承中父类中存在同名的方法,那么此时,子类在调用时会调用哪个方法呢?这就存在了二义性,在python中,为了避免这种情况,使用MRO的方式进行方法的查找,即按照继承的顺序依次查找。如果子类中重写了该方法,就调用子类本身的,如果没有,就先查找A,找到了就调用,找不到就继续往下找,查找B,以此类推。如果最终都没有找到匹配的,就会报错。菱形继承是多重继承的典型问题,有兴趣可以去了解。在java中,可以通过接口或者内部类来实现这种类似多重继承的作用。有兴趣的也可以去了解。
多层继承:
class A:
def test(self):
print("这是A的test方法")
class B(A):
def test(self):
super().test()
print("这是B的test方法")
class C(B):
def myTest(self):
print("这是C的方法")
c = C()
c.test()
同样的,子类C如果重写了B中的test方法,就会首先调用子类自己的方法,如果没有,就调用父类B的方法,要想进一步调用A的test方法,只需要在A的子类B中使用super关键字即可。super关键字表示该类的父类。
输出:
无论怎么样,多重继承只是一个手段,并没有其优劣之分,只有使用者合理的利用,那么它才能发挥出应有的作用,
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法