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 相关文章推荐
web.py在模板中输出美元符号的方法
Aug 26 Python
python学习之编写查询ip程序
Feb 27 Python
Python中is与==判断的区别
Mar 28 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
Jun 12 Python
详解Django中间件的5种自定义方法
Jul 26 Python
对python 多线程中的守护线程与join的用法详解
Feb 18 Python
python实现两个经纬度点之间的距离和方位角的方法
Jul 05 Python
获取Pytorch中间某一层权重或者特征的例子
Aug 17 Python
python自动点赞功能的实现思路
Feb 26 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
新手入门学习python Numpy基础操作
Mar 02 Python
Keras自定义IOU方式
Jun 10 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
PHP4之真OO
2006/10/09 PHP
jquery tools之tooltip
2009/07/25 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
2013/08/29 Javascript
JS保存和删除cookie操作 判断cookie是否存在
2013/11/13 Javascript
浅析JQuery中的html(),text(),val()区别
2014/09/01 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
QRCode.js:基于JQuery的生成二维码JS库的使用
2017/06/23 jQuery
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
vue-cli脚手架引入弹出层layer插件的几种方法
2019/06/24 Javascript
JS Html转义和反转义(html编码和解码)的实现与使用方法总结
2020/03/10 Javascript
Vue如何提升首屏加载速度实例解析
2020/06/25 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
python实现数值积分的Simpson方法实例分析
2015/06/05 Python
在Lighttpd服务器中运行Django应用的方法
2015/07/22 Python
Python使用dis模块把Python反编译为字节码的用法详解
2016/06/14 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Flask框架信号用法实例分析
2018/07/24 Python
opencv python 基于KNN的手写体识别的实例
2018/08/03 Python
python的dict判断key是否存在的方法
2020/12/09 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
共产党员公开承诺书范文
2014/03/28 职场文书
医学专业自荐信
2014/06/14 职场文书
普通党员个人整改措施
2014/10/27 职场文书
展览会邀请函
2015/02/02 职场文书
运动会100米广播稿
2015/08/19 职场文书
2016国培研修心得体会
2016/01/08 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
python基于turtle绘制几何图形
2021/06/15 Python