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 多线程抓取图片效率对比
Feb 27 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
举例讲解Python面向对象编程中类的继承
Jun 17 Python
Python 实现文件的全备份和差异备份详解
Dec 27 Python
Python调用C++程序的方法详解
Jan 24 Python
Python语言描述最大连续子序列和
Dec 05 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
解决Tensorboard 不显示计算图graph的问题
Feb 15 Python
python使用OpenCV模块实现图像的融合示例代码
Apr 10 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
Python urllib request模块发送请求实现过程解析
Dec 10 Python
ASP.NET Core中的配置详解
Feb 05 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生成缩略图的类代码
2008/10/02 PHP
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
document.write()及其输出内容的样式、位置控制
2013/08/12 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
深入分析js的冒泡事件
2014/12/05 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
javascript操作表格排序实例分析
2015/05/06 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
Python中无限元素列表的实现方法
2014/08/18 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
Django实现跨域的2种方法
2019/07/31 Python
Python流程控制 if else实现解析
2019/09/02 Python
Python嵌套函数,作用域与偏函数用法实例分析
2019/12/26 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
MyFrenchPharma中文网:最大的法国药妆平台
2016/10/07 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
经济信息系毕业生自荐信
2014/06/02 职场文书
离婚协议书的范本
2015/01/27 职场文书
2015学校图书管理员工作总结
2015/05/11 职场文书
Win11 S Mode版本泄露 正式上线后叫做Windows 11 SE
2021/11/21 数码科技
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python