python super().__init__()_python——多继承使用super().__init__ 发生的状态
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__ 发生的状态相关推荐
- python可以继承多个类吗_python类继承(super多类继承)
1. python2和python3中定义类的形式不同 python3中只有只有新式类 class A(object): # python3中定义新式类 class A: # python3中定义新式 ...
- python多继承顺序_Python多继承以及MRO顺序的使用
多继承以及MRO顺序 1. 单独调用父类的方法 # coding=utf-8 print("******多继承使用类名.__init__ 发生的状态******") class P ...
- python accessiblechildren用法_python类继承用法实例分析
本文实例讲述了python类继承用法.分享给大家供大家参考.具体如下: help('object') # test class Class1(object): """ C ...
- python实现父类继承_Python多继承用super调用父类方法?
python的super传递:python多重继承的super调用父类的兄弟类 - 30天尝试新事情30daydo.com 如果要调用父类的父类,可以直接用类名(类名需要在mro里面) # 多重继承 ...
- 利用python画钻石_python多继承(钻石继承)问题和解决方法简单示例
本文实例讲述了python多继承(钻石继承)问题和解决方法.分享给大家供大家参考,具体如下: 在菱形多继承中,如果用父类.__init__()来调用父类的初始化方法,最上层会执行两次,所以遇到这种情况 ...
- python的继承用法_Python 中的继承之Super用法
以下Copy自官方文档说明,可点击查看官网源文 翻译内容属于德德自译,有不当之处请指正,勿喷... 翻译括弧中是德德自己理解,通过代码验证的,勿喷... super(type[, object-or- ...
- python类的继承super方法_Python类的继承super相关原理解析
看了网上许多关于super.mro.C3的介绍感觉没有一份很容易初学者理解的文档,直接看C3算法的话,比较难理解,也没必要,如果掌握一套规律的话,会轻松许多.我将网上这些博主的文章进行一个梳理总结,最 ...
- python 多继承与super使用详解_Python super()方法、多继承以及MRO顺序
仅供学习,转载请注明出处 单独调用父类的方法 需求:编写一个类,然后再写一个子类进行继承,使用子类去调用父类的方法1. 使用方法1打印: 胖子老板,来包槟榔. 那么先写一个胖子老板的父类,执行一下: ...
- python学习之类class继承、super()使用和__init__初始化
类的学习.__init__学习和super方法学习 1.python中类的属性.方法学习 2. 类的实例方法.类方法.静态方法 3.类class的访问控制:单划线_与双划线__ 4.继承中的__ini ...
最新文章
- 刚进园子,广州的冬天像夏天
- [python]_ELVE_pip2和pip3如何共存
- Android7.1 Presentation双屏异显原理分析
- 2020-12-22 一些有用的开源软件
- javase中的super、this和protected关键字
- C/C++获取指定网口的IP地址
- 【Level 08】U06 Good Feeling L2 Blow the competition away
- 第四代双模5G旗舰:vivo X30系列为啥「超有梗」?
- 【二分法】计蒜客:气球消消乐
- 2014 北京区域赛 dp
- 关于Java中的final关键字
- 支付宝小程序日期选择组件datePicker封装
- PHP接口报错:Malformed UTF-8 characters, possibly incorrectly encoded
- 数据库原理及应用实验二
- 《21天学通C语言(第7版)》一导读
- MySQL命令大全!淦!命令总结附带MySQL开源手册(fntp开源)
- idea项目一键部署增强版(经验篇)
- PowerPoint演示文档大瘦身
- CF1151F Sonya and Informatics
- 终结吧!机器学习的数学焦虑_机器人来了!
热门文章
- 20-100-040-安装-Centos 7.5 安装MYSQL
- 【SpringCloud】Spring Cloud bus
- 【clickhouse】ClickHouse官方中文文档 阅读笔记
- 【Flink】TableException: A raw type backed by type information has no serializable
- 30-10-010-编译-IDEA下编译kafka 2.3源码
- 【面试题】HashMap 面试 21 问
- 【Spring】Spring注解配置okhttp3
- 【MySQL】ERROR 1055 (42000) ROUP BY clause this is incompatible with sql_mode=only_full_group_by
- 95-260-058-源码-检查点-CheckpointBarrierHandler
- 初探Oracle--Oracle查询操作