print("******多继承使用super().__init__ 发生的状态******")

class Parent(object):

def __init__(self, name, *args, **kwargs): # 为避免多继承报错,使用不定长参数,接受参数

print('parent的init开始被调用')

self.name = name

print('parent的init结束被调用')

class Son1(Parent):

def __init__(self, name, age, *args, **kwargs): # 为避免多继承报错,使用不定长参数,接受参数

print('Son1的init开始被调用')

self.age = age

super().__init__(name, *args, **kwargs) # 为避免多继承报错,使用不定长参数,接受参数

print('Son1的init结束被调用')

class Son2(Parent):

def __init__(self, name, gender, *args, **kwargs): # 为避免多继承报错,使用不定长参数,接受参数

print('Son2的init开始被调用')

self.gender = gender

super().__init__(name, *args, **kwargs) # 为避免多继承报错,使用不定长参数,接受参数

print('Son2的init结束被调用')

class Grandson(Son1, Son2):

def __init__(self, name, age, gender):

print('Grandson的init开始被调用')

# 多继承时,相对于使用类名.__init__方法,要把每个父类全部写一遍

# 而super只用一句话,执行了全部父类的方法,这也是为何多继承需要全部传参的一个原因

super(Grandson, self).__init__(name, age, gender)

# super().__init__(name, age, gender)

print('Grandson的init结束被调用')

print(Grandson.__mro__)

gs = Grandson('grandson', 12, '男')

print('姓名:', gs.name)

print('年龄:', gs.age)

print('性别:', gs.gender)

print("******多继承使用super().__init__ 发生的状态******\n\n")

​ 输出:

******多继承使用super().__init__ 发生的状态******

(, , , , )

Grandson的init开始被调用

Son1的init开始被调用

Son2的init开始被调用

parent的init开始被调用

parent的init结束被调用

Son2的init结束被调用

Son1的init结束被调用

Grandson的init结束被调用

姓名: grandson

年龄: 12

性别: 男

******多继承使用super().__init__ 发生的状态******

python super().__init__()_python——多继承使用super().__init__ 发生的状态相关推荐

  1. python可以继承多个类吗_python类继承(super多类继承)

    1. python2和python3中定义类的形式不同 python3中只有只有新式类 class A(object): # python3中定义新式类 class A: # python3中定义新式 ...

  2. python多继承顺序_Python多继承以及MRO顺序的使用

    多继承以及MRO顺序 1. 单独调用父类的方法 # coding=utf-8 print("******多继承使用类名.__init__ 发生的状态******") class P ...

  3. python accessiblechildren用法_python类继承用法实例分析

    本文实例讲述了python类继承用法.分享给大家供大家参考.具体如下: help('object') # test class Class1(object): """ C ...

  4. python实现父类继承_Python多继承用super调用父类方法?

    python的super传递:python多重继承的super调用父类的兄弟类 - 30天尝试新事情​30daydo.com 如果要调用父类的父类,可以直接用类名(类名需要在mro里面) # 多重继承 ...

  5. 利用python画钻石_python多继承(钻石继承)问题和解决方法简单示例

    本文实例讲述了python多继承(钻石继承)问题和解决方法.分享给大家供大家参考,具体如下: 在菱形多继承中,如果用父类.__init__()来调用父类的初始化方法,最上层会执行两次,所以遇到这种情况 ...

  6. python的继承用法_Python 中的继承之Super用法

    以下Copy自官方文档说明,可点击查看官网源文 翻译内容属于德德自译,有不当之处请指正,勿喷... 翻译括弧中是德德自己理解,通过代码验证的,勿喷... super(type[, object-or- ...

  7. python类的继承super方法_Python类的继承super相关原理解析

    看了网上许多关于super.mro.C3的介绍感觉没有一份很容易初学者理解的文档,直接看C3算法的话,比较难理解,也没必要,如果掌握一套规律的话,会轻松许多.我将网上这些博主的文章进行一个梳理总结,最 ...

  8. python 多继承与super使用详解_Python super()方法、多继承以及MRO顺序

    仅供学习,转载请注明出处 单独调用父类的方法 需求:编写一个类,然后再写一个子类进行继承,使用子类去调用父类的方法1. 使用方法1打印: 胖子老板,来包槟榔. 那么先写一个胖子老板的父类,执行一下: ...

  9. python学习之类class继承、super()使用和__init__初始化

    类的学习.__init__学习和super方法学习 1.python中类的属性.方法学习 2. 类的实例方法.类方法.静态方法 3.类class的访问控制:单划线_与双划线__ 4.继承中的__ini ...

最新文章

  1. 刚进园子,广州的冬天像夏天
  2. [python]_ELVE_pip2和pip3如何共存
  3. Android7.1 Presentation双屏异显原理分析
  4. 2020-12-22 一些有用的开源软件
  5. javase中的super、this和protected关键字
  6. C/C++获取指定网口的IP地址
  7. 【Level 08】U06 Good Feeling L2 Blow the competition away
  8. 第四代双模5G旗舰:vivo X30系列为啥「超有梗」?
  9. 【二分法】计蒜客:气球消消乐
  10. 2014 北京区域赛 dp
  11. 关于Java中的final关键字
  12. 支付宝小程序日期选择组件datePicker封装
  13. PHP接口报错:Malformed UTF-8 characters, possibly incorrectly encoded
  14. 数据库原理及应用实验二
  15. 《21天学通C语言(第7版)》一导读
  16. MySQL命令大全!淦!命令总结附带MySQL开源手册(fntp开源)
  17. idea项目一键部署增强版(经验篇)
  18. PowerPoint演示文档大瘦身
  19. CF1151F Sonya and Informatics
  20. 终结吧!机器学习的数学焦虑_机器人来了!

热门文章

  1. 20-100-040-安装-Centos 7.5 安装MYSQL
  2. 【SpringCloud】Spring Cloud bus
  3. 【clickhouse】ClickHouse官方中文文档 阅读笔记
  4. 【Flink】TableException: A raw type backed by type information has no serializable
  5. 30-10-010-编译-IDEA下编译kafka 2.3源码
  6. 【面试题】HashMap 面试 21 问
  7. 【Spring】Spring注解配置okhttp3
  8. 【MySQL】ERROR 1055 (42000) ROUP BY clause this is incompatible with sql_mode=only_full_group_by
  9. 95-260-058-源码-检查点-CheckpointBarrierHandler
  10. 初探Oracle--Oracle查询操作