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. Openssl rand命令

    一.简介 rand命令用来产生伪随机字节,随机数字产生器需要一个seed,在没有/dev/srandom系统下的解决方法是自己做一个~/.rnd文件 二.语法 openssl rand [-out f ...

  2. p4980 polya定理

    传送门 分析 orz ymh 代码 #include<iostream> #include<cstdio> #include<cstring> #include&l ...

  3. qy Undefied index报错

    目测是不支持如下写法 $value['status'] = $map[$value['status']];

  4. Oracle 11g 重建EM需要删除的对象

    因为需求需要重建EM,重建时因为某些错误被迫停止,比如对象已存在.用户已经存在等,最终找出了创建必备的条件: 1.环境变量(Oracle和Grid在同一个用户下安装) ORACLE_HOME 要设为D ...

  5. Session分布式共享 = Session + Redis + Nginx(转)

    出处:http://www.cnblogs.com/newP/p/6518918.html 一.Session 1.Session 介绍 我相信,搞Web开发的对Session一定再熟悉不过了,所以我 ...

  6. xampp 添加ssl 访问

    编辑php.ini 文件,找到 “;extension=php_openssl.dll” (去掉前面的;号注释) <VirtualHost *:8090> DocumentRoot &qu ...

  7. 用jvm指令分析String 常量池

    其他博友的不同理解方式:  http://hi.baidu.com/boywell/item/d5ee5b0cc0af55c875cd3cfd 我们先来看一个类 public class javaPT ...

  8. Appium 简介及工作原理

    申请:本文介绍主要是针对Android. 1.什么是Appium: Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持IOS.Android及Firefox ...

  9. MacOS安装使用Node.js

    1. 到官网https://nodejs.org/zh-cn/download/下载,选择Macintosh Installer, 如下: 2. 按预设的下一步,Node.js版本为v6.10.0, ...

  10. duilib入门简明教程 -- XML基础类(7)

    现在大家应该对XML描述界面不那么陌生了,那么我们做进一步介绍. 前面的教程我们写了很多代码,为的是让大家了解下基本流程,其实duilib已经对常用的操作做了很好的包装,正式使用时无需像前面的教程那样 ...