概述
6. 类的多继承与超继承
6.1 多继承
python的类还有一个特点,就是可以继承多个类。但是我们作为测试人员,在实际中很少用到这个多继承,这里不就详细(一直都不详细,hhhh)写了。上代码:
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # @Time :2018/12/5 13:43 4 # @Author :Yosef 5 # @Email :wurz529@foxmail.com 6 # @File: :多继承.py 7 # @Software :PyCharm Community Edition 8 class A: 9 def add(self,a,b): 10 self.a = int(a) 11 self.b = int(b) 12 return a+b 13 14 15 class B: 16 def sub(self, a, b): 17 self.a = int(a) 18 self.b = int(b) 19 return a - b 20 21 class C(A,B): 22 pass 23 24 c=C() 25 result1=c.add(1,2) 26 result2=c.sub(3,1) 27 print(result1,result2)
在这个例子中,C既继承A又继承了B,也就是继承了A,B所有的方法,在实例C之后,我们可以直接去调用AB的方法。上面看到的是,AB两个类的类方法不同,如果有类方法相同的呢?
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # @Time :2018/12/5 13:43 4 # @Author :Yosef 5 # @Email :wurz529@foxmail.com 6 # @File: :多继承.py 7 # @Software :PyCharm Community Edition 8 class A: 9 def add(self,a,b): 10 self.a = int(a) 11 self.b = int(b) 12 print("Class A") 13 return a+b 14 15 16 class B: 17 def add(self,a,b): 18 self.a = int(a) 19 self.b = int(b) 20 print("Class B") 21 return a+b 22 23 def sub(self, a, b): 24 self.a = int(a) 25 self.b = int(b) 26 return a - b 27 28 class C(A,B): 29 pass 30 31 c=C() 32 result1=c.add(1,2) 33 # result2=c.sub(3,1) 34 print(result1)
结果就是调用的是A的方法,多继承调用,出现同名方法时,会按照顺序优先调用前面父类的同名方法。
6.2 超继承
一听这个名字就很NB。超继承其实也是重写方法的一种,它做的事,就是在类方法中既继承父类的所有特性,也有子类的新特性。超继承用super关键字。继续用工程师来做例子。
阿西吧,真被这个例子搞得头昏脑胀,语法记不住了。好在终于调好了。且看以下代码:
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # @Time :2018/12/4 16:03 4 # @Author :Yosef 5 # @Email :wurz529@foxmail.com 6 # @File: :SoftwareTestEngineer.py 7 # @Software :PyCharm Community Edition 8 class SoftwareTestEngineer: 9 def __init__(self,name,age): 10 self.name = name 11 self.age = age 12 13 def basic_skill(self): 14 print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。") 15 16 def salary(self, salary): 17 print("薪资大概是%s" % salary) 18 19 class JuniorSoftwareTestEngineer(SoftwareTestEngineer): 20 21 def basic_skill(self): 22 print(self.name+"今年"+str(self.age)+"岁,会写自动化测试脚本。。") 23 24 def code(self): 25 print(self.name+"也会写代码哦") 26 27 class SeniorSoftwareTestEngineer(JuniorSoftwareTestEngineer): 28 def code(self): 29 super(SeniorSoftwareTestEngineer, self).code() 30 print(self.name+"也可以做开发") 31 32 33 34 ding = SeniorSoftwareTestEngineer("Ding","25") 35 # ding.code() 36 ding.code()
super类写的是子类的类名,顺着子类的类名找到对应的父类,并调用父类的方法,实现超继承。
super(子类名,self).方法名
转载于:https://www.cnblogs.com/wlyhy/p/10070901.html
最后
以上就是独特母鸡为你收集整理的python之类与对象(5)6. 类的多继承与超继承的全部内容,希望文章能够帮你解决python之类与对象(5)6. 类的多继承与超继承所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复