6. 类的多继承与超继承

6.1 多继承

python的类还有一个特点,就是可以继承多个类。但是我们作为测试人员,在实际中很少用到这个多继承,这里不就详细(一直都不详细,hhhh)写了。上代码:

 #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time :2018/12/5 13:43
# @Author :Yosef
# @Email :wurz529@foxmail.com
# @File: :多继承.py
# @Software :PyCharm Community Edition
class A:
def add(self,a,b):
self.a = int(a)
self.b = int(b)
return a+b class B:
def sub(self, a, b):
self.a = int(a)
self.b = int(b)
return a - b class C(A,B):
pass c=C()
result1=c.add(1,2)
result2=c.sub(3,1)
print(result1,result2)

在这个例子中,C既继承A又继承了B,也就是继承了A,B所有的方法,在实例C之后,我们可以直接去调用AB的方法。上面看到的是,AB两个类的类方法不同,如果有类方法相同的呢?

 #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time :2018/12/5 13:43
# @Author :Yosef
# @Email :wurz529@foxmail.com
# @File: :多继承.py
# @Software :PyCharm Community Edition
class A:
def add(self,a,b):
self.a = int(a)
self.b = int(b)
print("Class A")
return a+b class B:
def add(self,a,b):
self.a = int(a)
self.b = int(b)
print("Class B")
return a+b def sub(self, a, b):
self.a = int(a)
self.b = int(b)
return a - b class C(A,B):
pass c=C()
result1=c.add(1,2)
# result2=c.sub(3,1)
print(result1)

结果就是调用的是A的方法,多继承调用,出现同名方法时,会按照顺序优先调用前面父类的同名方法。

6.2 超继承

一听这个名字就很NB。超继承其实也是重写方法的一种,它做的事,就是在类方法中既继承父类的所有特性,也有子类的新特性。超继承用super关键字。继续用工程师来做例子。

阿西吧,真被这个例子搞得头昏脑胀,语法记不住了。好在终于调好了。且看以下代码:

 #!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time :2018/12/4 16:03
# @Author :Yosef
# @Email :wurz529@foxmail.com
# @File: :SoftwareTestEngineer.py
# @Software :PyCharm Community Edition
class SoftwareTestEngineer:
def __init__(self,name,age):
self.name = name
self.age = age def basic_skill(self):
print(self.name+"今年"+str(self.age)+"岁,会简单的功能测试。。") def salary(self, salary):
print("薪资大概是%s" % salary) class JuniorSoftwareTestEngineer(SoftwareTestEngineer): def basic_skill(self):
print(self.name+"今年"+str(self.age)+"岁,会写自动化测试脚本。。") def code(self):
print(self.name+"也会写代码哦") class SeniorSoftwareTestEngineer(JuniorSoftwareTestEngineer):
def code(self):
super(SeniorSoftwareTestEngineer, self).code()
print(self.name+"也可以做开发") ding = SeniorSoftwareTestEngineer("Ding","")
# ding.code()
ding.code()

super类写的是子类的类名,顺着子类的类名找到对应的父类,并调用父类的方法,实现超继承。

super(子类名,self).方法名

python之类与对象(5)的更多相关文章

  1. python基础——获取对象信息

    python基础——获取对象信息 当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type( ...

  2. python 引用和对象理解

    今天浏览博客的时候看到这么一句话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象 ...

  3. Python深入03 对象的属性

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python一切皆对象(object),每个对象都可能有多个属性(attribut ...

  4. Python的基础--对象 转

      对象(Objects)是python中数据的抽象,python中所有的数据均可以用对象或者是对象之间的关系来表示.每个对象均有标识符(identity).类型(type).值(value). 标识 ...

  5. Python可迭代对象、迭代器和生成器

    Python可迭代对象.迭代器和生成器 python 函数 表达式 序列 count utf-8 云栖征文 python可迭代对象 python迭代器 python生成器 摘要: 8.1 可迭代对象( ...

  6. Python的基础--对象

    对象(Objects)是python中数据的抽象,python中所有的数据均可以用对象或者是对象之间的关系来表示.每个对象均有标识符(identity).类型(type).值(value). 标识符. ...

  7. Python一切皆对象

    Python从设计之初就是一门面向对象的语言,它有一个重要的概念,即一切皆对象. Java虽然也是面向对象编程的语言,但是血统没有Python纯正.比如Java的八种基本数据类型之一int,在持久化的 ...

  8. python引用和对象详解

    python引用和对象详解 @[马克飞象] python中变量名和对象是分离的 例子 1: a = 1 这是一个简单的赋值语句,整数 1 为一个对象,a 是一个引用,利用赋值语句,引用a指向了对象1. ...

  9. 举例子来说明Python引用和对象

    今天看到这么一句奇怪的话: python中变量名和对象是分离的:最开始的时候是看到这句话的时候没有反应过来.决定具体搞清楚一下python中变量与对象之间的细节.(其实我感觉应该说 引用和对象分离 更 ...

  10. Python 获取类对象的父类

    参考 Get parent class name? Python 获取类对象的父类 给定一个类的对象a,要求获取该对象的父类. 方法: a.__class__.__bases__ 返回由该对象的父类组 ...

随机推荐

  1. smarty内置函数、自定义函数

    1.把字符串里的d字母替换成h格式:{'d'|str_replace:'h':$str}; d要查找的字符 h要替换的字符 $str字符串 2.function test($param){$p1=$p ...

  2. Perl 学习笔记-哈希

    1.Perl中的哈希 高效快捷, 没有大小限制. 大哈希一样很快! 命名: 和Perl其他标识符一样, 同时拥有自己的的名字空间.  $roger{"sex"} 和 $roger没 ...

  3. vCenter Server Heartbeat

    1.简介 vCenter Server Heartbeat为VMware vCenter Server提供关键任务高可用性,保护虚拟基础架构免受硬件.网络.配置等的影响,基于Windows的服务,可为 ...

  4. Linux学习系列——零基础开始

    第一部分 Linux基础命令 1.查看系统信息命令 2.Linux内核版本 3.修改环境变量

  5. CSS 实现等高布局以及多行文本垂直居中

    将display属性设置为table-cell,具有table的特点. 1.同行等高. 2.宽度自动调节. 相当于表格是td, <style type="text/css"& ...

  6. [Lua快速了解一下]Lua的Table

    Lua中的Table其实就是一个Key Value的structure haoel = {name=, handsome=True} -table的CRUD操作 haoel.website=" ...

  7. Java 理论与实践: 修复 Java 内存模型,第 2 部分(转载)

    在 JSR 133 中 JMM 会有什么改变? 活跃了将近三年的 JSR 133,近期发布了关于如何修复 Java 内存模型(Java Memory Model, JMM)的公开建议.在本系列文章的 ...

  8. python中用ElementTree.iterparse()读取xml文件中的多层节点

    我在使用Python解析比较大型的xml文件时,为了提高效率,决定使用iterparse()方法,但是发现根据网上的例子:每次if event == 'end':之后elem.clear()或者是每次 ...

  9. 引用HM.Util.Ioc 的时候报错

    引用HM.Util.Ioc 的时候报错 错误:The type name or alias SqlServer could not be resolved. Please check your con ...

  10. UML uml基础知识

    uml基础知识 一.了解: uml是Unified Modeling Language的缩写,意思是统一建模语言或标准建模语言. UML规范用来描述建模的概念有,类(对象的).对象.关联.职责.行为. ...