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使用rsa加密算法模块模拟新浪微博登录
Jan 22 Python
python2 与 python3 实现共存的方法
Jul 12 Python
利用python GDAL库读写geotiff格式的遥感影像方法
Nov 29 Python
python绘制散点图并标记序号的方法
Dec 11 Python
python对于requests的封装方法详解
Jan 03 Python
在Pycharm中修改文件默认打开方式的方法
Jan 17 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
python内打印变量之%和f的实例
Feb 19 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多用户计数器代码
2007/03/11 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析
2019/12/31 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
javascript中有趣的反柯里化深入分析
2012/12/05 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
jQuery选择器源码解读(五):tokenize的解析过程
2015/03/31 Javascript
javascript中闭包概念与用法深入理解
2016/12/15 Javascript
bootstrap多种样式进度条展示
2016/12/20 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
微信小程序新闻网站详情页实例代码
2020/01/10 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
Python导入oracle数据的方法
2015/07/10 Python
python语言中with as的用法使用详解
2018/02/23 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
如何使用Python脚本实现文件拷贝
2019/11/20 Python
浅谈PyTorch的可重复性问题(如何使实验结果可复现)
2020/02/20 Python
Django自定义列表 models字段显示方式
2020/04/03 Python
基于python实现坦克大战游戏
2020/10/27 Python
python的setattr函数实例用法
2020/12/16 Python
Omio法国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/13 全球购物
这段代码难道不该打印出56吗
2013/02/27 面试题
毕业自我鉴定书
2014/03/24 职场文书
应聘销售主管的求职信
2014/04/26 职场文书
体育运动口号
2014/06/09 职场文书
生产操作工岗位职责
2014/09/16 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电
Java版 单机五子棋
2022/05/04 Java/Android