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 相关文章推荐
对numpy中布尔型数组的处理方法详解
Apr 17 Python
ubuntu17.4下为python和python3装上pip的方法
Jun 12 Python
详解Python3.6的py文件打包生成exe
Jul 13 Python
Django ModelForm组件使用方法详解
Jul 23 Python
python中用logging实现日志滚动和过期日志删除功能
Aug 20 Python
Python+Redis实现布隆过滤器
Dec 08 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
python实现提取str字符串/json中多级目录下的某个值
Feb 27 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
MoviePy简介及Python视频剪辑自动化
Dec 18 Python
写一个Python脚本自动爬取Bilibili小视频
Apr 24 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
推荐一篇入门级的Class文章
2007/03/19 PHP
在PHP中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
php cookies中删除的一般赋值方法
2011/05/07 PHP
解析如何屏蔽php中的phpinfo()函数
2013/06/06 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
2019/12/02 PHP
在chrome中window.onload事件的一些问题
2010/03/01 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
JsRender for object语法简介
2014/10/31 Javascript
Javascript函数式编程语言
2015/10/11 Javascript
js生成随机数的过程解析
2015/11/24 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
使用async、enterproxy控制并发数量的方法详解
2018/01/02 Javascript
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
使用Python的Treq on Twisted来进行HTTP压力测试
2015/04/16 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
香蕉共和国加拿大官网:Banana Republic加拿大
2018/08/06 全球购物
售后专员岗位职责
2013/12/08 职场文书
学校万圣节活动方案
2014/02/13 职场文书
银行求职信范文
2014/05/26 职场文书
博士生导师推荐信
2014/07/08 职场文书
小学生运动会通讯稿
2014/09/23 职场文书
2014院党委领导班子及其成员群众路线对照检查材料思想汇报
2014/10/04 职场文书
毕业横幅标语
2014/10/08 职场文书
期末考试复习计划
2015/01/19 职场文书
Go语言带缓冲的通道实现
2021/04/26 Golang