在继承中,子类会自动获得一份父类的所有属性和方法,同时还可以定义自己的属性和方法。
对于构造函数的定义会有以下几种情况:

1、父类有构造函数,子类没有

class Base:def __init__(self, name, age):self.m_Name = nameself.m_Age = 10self.m_Address = 'China'passdef PrintName(self):print('My name is ' + self.m_Name)pass
class Derived(Base):pass
derived = Derived()

改代码运行会出现错误:

由错误提示可看出,需要有两个实参传给__init__()函数,而子类中并没有定义,说明子类继承了父类的构造函数。

更改之后代码如下:

class Base:def __init__(self, name, age):self.m_Name = nameself.m_Age = 10self.m_Address = 'China'passdef PrintName(self):print('My name is ' + self.m_Name)pass
class Derived(Base):pass
derived = Derived('Foer Kent', 18)
print(derived.m_Age)
derived.PrintName()

执行结果为:

此时说明,子类已经通过继承下来的构造函数,对继承下来的属性进行赋值,方法也可执行。

2、父类中有构造函数,子类中也有,但是没有使用super()函数

class Base:def __init__(self, name, age):self.m_Name = nameself.m_Age = 10self.m_Address = 'China'passdef PrintName(self):print('My name is ' + self.m_Name)pass
class Derived(Base):def __init__(self, name, age):passpass
derived = Derived('Foer Kent', 18)
print(derived.m_Age)
derived.PrintName()

会出现错误:

由错误提示可见,此时子类中并没继承父类中的实例属性,是因为当子类定义了构造函数时,相当于重写了父类中的方法,此时相当于在父类中与子类重名的方法没有被继承,而m_Age几个属性是在父类构造函数中定义的实例属性,没有调用父类构造函数自然就不会有这几个属性,就不会被继承下来。但如果是父类中的类属性,会被继承下来,具体操作不在演示,读者可自行尝试。
所以连后面的print方法也不会执行,因为就没有m_Name这个属性。

注意:Python中多态的重写方法问题,重写的方法只要方法名相同,参数列表中个数不同,也相当于发生了重写,如果想调用父类中的方法,而不是子类中的方法,将用到以下要讲的super()函数。

多态可参照https://blog.csdn.net/Falcont/article/details/115695910
属性分类可参照https://blog.csdn.net/Falcont/article/details/115696093

3、父类中有构造函数,子类中有,且通过super()函数进行关联

class Base:def __init__(self, name, age):self.m_Name = nameself.m_Age = 10self.m_Address = 'China'passdef PrintName(self):print('My name is ' + self.m_Name)pass
class Derived(Base):def __init__(self, name, age):super(Derived, self).__init__(name, age)passpass
derived = Derived('Foer Kent', 18)
print(derived.m_Age)
derived.PrintName()

super(子类名,self).init(value1,value2),此处参数列表不需要self,只需要与父类中除self之外的相同即可。super后面的()中参数可以不写。即直接super().init(父类中构造函数除了self以外的形参)
此时将显示:

super()函数使得Python调用的是父类的构造函数,而不是子类的。

Python构造函数的继承相关推荐

  1. Python中的继承和多态

    本文以生活中的基础现象为切入点,主要介绍了Python基础中继承和多态,包括单继承.多继承的语法.多态常见的 "鸭子类型". 以及如何重写父类的方法都做了详细的讲解. 一.继承的介 ...

  2. python中的继承有什么特点_python类的继承是什么?类的继承有什么样的规则?

    在这篇文章之中我们来了解一下python类的继承,对于刚刚接触到python这一编程语言的朋友来说,对于python类的继承的了解应该比较少,不过没关系,在接下来的文章之中我们就来了解一下python ...

  3. python在多继承中子类调用某个父类的同名方法之 super讲解(mro机制)***

    目录 2.   钻石继承遇到的难题 3.   针对钻石问题各语言的解决方法 3.1. C++ 3.2. Java 3.3. Ruby 3.4. Python 4.   super的内核:mro 5.  ...

  4. python中的继承冲突及继承顺序

    python中的继承冲突及继承顺序 简单的菱形继承 设计类如下 #mermaid-svg-IYOh6g5InwMB9svy {font-family:"trebuchet ms", ...

  5. python一个类继承多个类_如何让Python继承多个类?一文读懂Python类的继承

    面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过Python类的继承并且在此基础上衍生出让Python继承多个类的方法. 通过Python类的继承创建的新类称为子类或派生类, ...

  6. python中的继承与多态_Python3 与 C# 面向对象之~继承与多态

    2.继承               ¶ 2.1.单继承               ¶ 在OOP中,当我们定义一个Class的时候,可以从某个现有的Class继承 新的Class称为子类,而被继承的 ...

  7. python 构造函数传入多变量

    python 构造函数传入多变量 python构造函数中可以使用**来(以字典的方式)传递多变量: (使用元组传递也可以,只需要将**改成*就可以了,但是元组传入时只能按照序号来进行索引,所以本文只分 ...

  8. python中继承是什么意思_如何理解Python中的继承?python入门

    如何理解Python中的继承?如今,python编程语言深受企业和个人的喜爱.python开发工程师是近年来互联网行业非常热门的职业岗位之一.学习python的人除了零基础的,还有一部分是在职运维.在 ...

  9. JavaScript [ 转 ] —— 面向对象编程(三):非构造函数的继承

    作者:阮一峰 这个系列的第一部分介绍了"封装",第二部分介绍了使用构造函数实现"继承". 今天是最后一个部分,介绍不使用构造函数实现"继承" ...

最新文章

  1. NuGet学习笔记(3) 搭建属于自己的NuGet服务器
  2. 腾讯AI开源框架Angel 3.0重磅发布:超50万行代码,支持3种算法,打造全栈机器学习平台...
  3. 第1章 游戏之乐——构造数独
  4. CLRS2e读书笔记—Chapter5 Appendix C
  5. quartus编译错误不支持芯片_硒鼓粉盒芯片不识别、耗材佘量错误、打印机亮红灯问题解决方法...
  6. c语言全国二级考试全对,全国计算机c语言二级考试通用复习资料.doc
  7. kmeans 算法_kmeans优化算法:二分Kmeans聚类算法
  8. RFT属于软件测试管理工具,IBM Rational FunctionalTester RFT 软件功能测试工具_FunctionalTester_领测软件测试网...
  9. 模型算法_数据分析师,要懂多少算法模型?
  10. C语言弧长,在C ++中从给定角度的弧长?
  11. 190906二级刷题水果与小女孩
  12. 快排算法的非递归实现
  13. 执行git命令出现 xcrun: error:
  14. KB4484127 更新导致ACCESS数据库查询报 Query '' is corrupt 异常解决方案
  15. python截图(长图和短图)方法封装
  16. Pentaho报表彻底研究
  17. excel 与mysql交互_excel和数据库交互
  18. android 动画直播,直播动画实现方案一
  19. css完整总结:第二篇(尺寸,外补白,内补白,边框,背景,颜色,字体,文本,文本装饰)
  20. ezpolt和plot区别_stem与plot的区别

热门文章

  1. Hadoop学习笔记: 分布式数据库 HBase
  2. 无风扇cpu测试软件,5分钟就蓝屏!无风扇散热评测之办公稳定性篇
  3. 汇编——多字节有符号加法
  4. 动态规划+BFS+DFS+回溯+红黑树+排序+链表+位运算(B站优质学习资源链接,后续会继续更新)
  5. Q3亏损超11亿,B站、拼多多、蔚来这些亏损新贵如何盈利破圈?
  6. 多属性决策与层次分析
  7. HP总裁孙振耀退休时的一封信-人生
  8. android sdk manager安装,Android SDK Manager安装过程
  9. 称特价影票被取消后影片仍正常放映 购票人起诉“淘票票”索赔500元
  10. 公交卡折射政府监管漏洞 巨额押金去向不明