zoukankan      html  css  js  c++  java
  • python之类与对象(5)

    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).方法名

  • 相关阅读:
    Javascript正则表达式详解转载
    转载Sqlserver2005 存储过程分页
    转载手把手教你用C#打包应用程序
    学习内容
    用C#实现将HTML文件转换为CHM文件(转)
    C# Windows服务添加安装程序
    sql 2008评估期已过有关如何升级,企业试用版到期,升级为企业版+sql2008破解
    iis不能启动是什么原因?错误提示:“提示服务器没有及时相应启动或控制请求”
    .NET 获取数据库中所有表名的方法
    如何获取Dynamics当前登录的用户的GUID,进而获取用户的信息
  • 原文地址:https://www.cnblogs.com/wlyhy/p/10070901.html
Copyright © 2011-2022 走看看