Python中的单继承与多继承实例分析


Posted in Python onMay 10, 2018

本文实例讲述了Python中的单继承与多继承。分享给大家供大家参考,具体如下:

单继承

一、介绍

Python 同样支持类的继承,如果一种语言不支持继承,类就没有什么意义。派生类的定义如下所示:

class DerivedClassName(BaseClassName1):
  <statement-1>
  .
  .
  .
  <statement-N>

需要注意圆括号中基类的顺序,若是基类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找基类中是否包含方法。

BaseClassName(示例中的基类名)必须与派生类定义在一个作用域内。
除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:

class DerivedClassName(modname.BaseClassName):

二、代码

# -*- coding:utf-8 -*-
#! python3
class people:
  #定义基本属性
  name =''
  age =0
  #定义私有属性,私有属性在类外部无法直接进行访问
  __weight =0
  #定义构造方法
  def __init__(self,n,a,w):
    self.name = n
    self.age = a
    self.__weight = w
  def speak(self):
    print("%s 说: 我 %d 岁。"%(self.name,self.age))
    #单继承示例
class student(people):
  grade =''
  def __init__(self,n,a,w,g):
    #调用父类的构造函数,下面两种方式都可以
    #people.__init__(self,n,a,w)
    super().__init__(n,a,w)
    self.grade = g
    #覆写父类的方法
  def speak(self):
    print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
s = student('ken',10,60,3)
s.speak()

三、运行结果

ken 说: 我 10 岁了,我在读 3 年级

多继承

一、介绍

Python同样有限的支持多继承形式。多继承的类定义形如下例:

class DerivedClassName(Base1, Base2, Base3):
  <statement-1>
  .
  .
  .
  <statement-N>

需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。

二、代码

# -*- coding:utf-8 -*-
#! python3
#类定义
class people:
  #定义基本属性
  name =''
  age =0
  #定义私有属性,私有属性在类外部无法直接进行访问
  __weight =0
  #定义构造方法
  def __init__(self,n,a,w):
    self.name = n
    self.age = a
    self.__weight = w
  def speak(self):
    print("%s 说: 我 %d 岁。"%(self.name,self.age))
#单继承示例
class student(people):
  grade =''
  def __init__(self,n,a,w,g):
    #调用父类的构函
    people.__init__(self,n,a,w)
    self.grade = g
  #覆写父类的方法
  def speak(self):
    print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
#另一个类,多重继承之前的准备
class speaker():
  topic =''
  name =''
  def __init__(self,n,t):
    self.name = n
    self.topic = t
  def speak(self):
    print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic))
#多重继承
class sample(speaker,student):
  a =''
  def __init__(self,n,a,w,g,t):
    student.__init__(self,n,a,w,g)
    speaker.__init__(self,n,t)
test = sample("Tim",25,80,4,"Python")
test.speak()#方法名同,默认调用的是在括号中排前地父类的方法

三、运行结果

我叫 Tim,我是一个演说家,我演讲的主题是 Python

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python Web服务器Tornado使用小结
May 06 Python
Python编程中的反模式实例分析
Dec 08 Python
Python解析nginx日志文件
May 11 Python
Python+django实现文件上传
Jan 17 Python
Random 在 Python 中的使用方法
Aug 09 Python
Anaconda2 5.2.0安装使用图文教程
Sep 19 Python
pyshp创建shp点文件的方法
Dec 31 Python
python实现异常信息堆栈输出到日志文件
Dec 26 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
Feb 27 Python
python 安装impala包步骤
Mar 28 Python
python里反向传播算法详解
Nov 22 Python
python中time包实例详解
Feb 02 Python
python3处理含有中文的url方法
May 10 #Python
Python异常处理操作实例详解
May 10 #Python
解决python3 网络请求路径包含中文的问题
May 10 #Python
Python之文字转图片方法
May 10 #Python
Python实现查看系统启动项功能示例
May 10 #Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 #Python
Python实现修改IE注册表功能示例
May 10 #Python
You might like
php读取xml实例代码
2010/01/28 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
浅析Yii2集成富文本编辑器redactor实例教程
2016/04/25 PHP
Yii框架引入coreseek分页功能示例
2019/02/08 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
jquery选择器、属性设置用法经验总结
2013/09/08 Javascript
js操作iframe父子窗体示例
2014/05/22 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
vue组件与复用详解
2018/04/08 Javascript
小程序实现留言板
2018/11/02 Javascript
小程序scroll-view安卓机隐藏横向滚动条的实现详解
2019/05/16 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
ES5 模拟 ES6 的 Symbol 实现私有成员功能示例
2020/05/06 Javascript
vue实现简易计算器功能
2021/01/20 Vue.js
如何在Vue项目中添加接口监听遮罩
2021/01/25 Vue.js
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
matplotlib在python上绘制3D散点图实例详解
2017/12/09 Python
pytorch实现线性拟合方式
2020/01/15 Python
python中get和post有什么区别
2020/06/19 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
解决python便携版无法直接运行py文件的问题
2020/09/01 Python
matplotlib阶梯图的实现(step())
2021/03/02 Python
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
经济学博士求职自荐信范文
2013/11/23 职场文书
网站开发实习生的自我评价
2013/12/11 职场文书
挑战杯创业计划书的写作指南
2014/01/07 职场文书
婚前保证书
2014/04/29 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
中标通知书
2015/04/17 职场文书
导师鉴定意见
2015/06/05 职场文书