Python面向对象程序设计之继承与多继承用法分析
作者:辰晓2046 发布时间:2021-11-16 12:43:52
标签:Python,面向对象,继承,多继承
本文实例讲述了Python面向对象程序设计之继承与多继承。分享给大家供大家参考,具体如下:
1. 继承
在C++和Java中,使用继承时,子类的构造函数会自动调用父类的构造函数,但在Python中,子类必须显式的在__init__()
函数中再次调用父类中的__init__()
函数。如下例:
class Employee(object):
def __init__(self, name, salary = 0):
self.name = name
self.salary = salary
def raisesalary(self, percent):
self.salary = self.salary * (1 + percent)
def work(self):
print self.name, "writes computer code"
class Designer(Employee):
def __init__(self, name):
Employee.__init__(self, name, 5000)
def work(self):
print self.name, "writes design document"
子类Designer也可以使用super
来进行初始化。
class Designer(Employee):
def __init__(self, name):
super(Designer, self).__init__(name, 5000)
def work(self):
print self.name, "writes design document"
2. 多继承
在C++中,使用虚继承来实现多继承,以避免子类在继承时多次调用基类的构造函数,而在Java中,则取消了多继承,使用接口来达到多继承的效果。在Python中的解决方案是MRO即Method Resolution Order,方法解析顺序。主要是通过super
方法实现的。但如果用super
方法来解决多继承问题,由于各个父类中的__init__()
函数中参数的数量可能不同,那应该怎么初始化呢?如下例。
class A(object):
def __init__(self, a):
print a
class B(object):
def __init__(self, a, b):
print a+b
class C(A, B):
def __init__(self):
super(C,self).__init__(?)
c = C()
则?处应该填几个参数?
答案是1个参数,因为按照继承的顺序,A类中的构造需要1个参数初始化即可。即super
函数与父类的继承顺序有关,且初始化父类继承顺序中,最先有__init__()
方法的那个。
super
方法的使用仍在继续探索中。。。
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/chenxiao_ji/article/details/50311597


猜你喜欢
- 前言最近经历了一次服务器SQL SERVER 数据库服务器端事务日志爆满,导致服务器数据库写入不进数据的宕机事件,经过此次事件的发生,奉劝各
- 微软建议用Request.BinaryRead()读取表单数据,但由于这种方法读出的是二进制数据,需要对读出的数据逐字节进行分析,生成有意义
- 不得不说python的自制包的相关工具真是多且混乱,什么setuptools,什么distutils,什么wheel,什么egg!!怎么有这
- if判断判断的定义 如果条件满足,就做一件事;条件不满足,就做另一件事; 判断语句又被称为分支语句,有判断,才有分支;i
- 当我们使用 tensorflow 训练神经网络的时候,模型持久化对于我们的训练有很重要的作用。如果我们的神经网络比较复杂,训练数据比较多,那
- 一、项目效果学校宿舍今天搬家,累麻了,突然发现展示处理的也很粗糙,就这样吧嘿嘿~~~二、核心流程1、openCV读取视频流、在每一帧图片上画
- 本文实例为大家分享了python实现移动木板小游戏的具体代码,供大家参考,具体内容如下一、游戏简介本游戏是通过python编写的小游戏,给初
- python等待10秒执行下一命令的方法:首先导入时间(time)模块;然后在需要等待执行的命令前调用sleep()方法,并在方法的括号里将
- 使用mysql二进制方式启动连接您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。实例以下是从命令行中连接m
- Oracle SQL语句中的Update可以和SEQUENCE联合使用,以达到更新某字段的值连续编号,而不需要使用游标去逐条遍历更新数据库记
- 一、什么是用户体验?用户体验的名词解释用户体验(User Experience,简称UE)是一种纯主观的在用户使用一个产品(服务)的过程中建
- 1、 引言小 * 丝:鱼哥,新年快乐!小鱼:无事不登三宝殿,有啥事,你直说吧…小 * 丝:别说的这么直接,这大过年的&
- 作为一名前端,我们通常要做的就是让页面在各系统A-Grade浏览器,甚至网站浏览份额0.1%以上的浏览器上良好显示。当然,还有性能问题。不过
- asp中使用addnew方法添加一条记录后,我们经常使用取得自递增的ID,而使用bookmark很容易实现这样的功能。rs.open&nbs
- SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦。
- 什么是事件委托/事件代理利用事件的冒泡传播机制(触发当前元素的某一个行为,它父级所有元素的相关行为都会被触发),如果一个容器中有很多元素都要
- 前言:谈到Update 语句大家可能不会陌生,很多情况下我们都会使用它来更新table中的记录。一般而言我们会使用innodb 的存储引擎,
- 数据集成:将不同表的数据通过主键进行连接起来,方便对数据进行整体的分析。两张表:ReaderInformation.csv,ReaderRe
- 在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法。1. 算数运算* 代表乘法** 代表乘方>>>
- 前言虽然现在文件上传下载工具多如牛毛,比如http、ftp、sftp、scp等方案都可以用于文件传输,但都是需要安装服务器甚至客户端。有一种