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的函数嵌套的使用方法
Jan 24 Python
详解Python中列表和元祖的使用方法
Apr 25 Python
python获取list下标及其值的简单方法
Sep 12 Python
Python内置函数OCT详解
Nov 09 Python
pandas实现选取特定索引的行
Apr 20 Python
Python爬取商家联系电话以及各种数据的方法
Nov 10 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
python傅里叶变换FFT绘制频谱图
Jul 19 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
分享Python异步爬取知乎热榜
Apr 12 Python
python通过新建环境安装tfx的问题
May 20 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实现微信图片上传到服务器的方法示例
2017/06/29 PHP
JavaScript 代码压缩工具小结
2012/02/27 Javascript
30分钟就入门的正则表达式基础教程
2013/02/25 Javascript
Jquery 实现表格颜色交替变化鼠标移过颜色变化实例
2013/08/28 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
JS简单生成两个数字之间随机数的方法
2016/08/03 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
vue.js实例对象+组件树的详细介绍
2017/10/20 Javascript
关于vue中watch检测到不到对象属性的变化的解决方法
2018/02/08 Javascript
webpack开发环境和生产环境的深入理解
2018/11/08 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
Vue实现手机号、验证码登录(60s禁用倒计时)
2020/12/19 Vue.js
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
使用Flask-Cache缓存实现给Flask提速的方法详解
2019/06/11 Python
Python restful框架接口开发实现
2020/04/13 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
python批量修改文件名的示例
2020/09/27 Python
pycharm如何设置官方中文(如何汉化)
2020/12/29 Python
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
波兰在线体育用品商店:Hop-Sport.pl
2019/07/23 全球购物
神路信息Java面试题目
2013/03/31 面试题
.NET是怎么支持多种语言的
2015/02/24 面试题
婚礼证婚人证婚词
2014/01/13 职场文书
国际会议邀请函范文
2014/01/16 职场文书
乔迁宴答谢词
2014/01/21 职场文书
大学运动会通讯稿
2014/01/28 职场文书
环保口号大全
2014/06/12 职场文书
2014年项目工作总结
2014/11/24 职场文书
Redis数据结构之链表与字典的使用
2021/05/11 Redis