一、super的作用

1.如果子类(Puple)继承父类(Person)不做初始化,那么会自动继承父类(Person)属性name。
2.如果子类(Puple_Init)继承父类(Person)做了初始化,且不调用super初始化父类构造函数,那么子类(Puple_Init)不会自动继承父类的属性(name)。
3.如果子类(Puple_super)继承父类(Person)做了初始化,且调用了super初始化了父类的构造函数,那么子类(Puple_Super)也会继承父类的(name)属性。

class Father():
def __init__(self,name = 'father'):
self.name = name class SonA(Father):
pass class SonB(Father):
def __init__(self,age ):
self.age = age class SonC(Father):
def __init__(self,name,age ): self.age = age
self.name = name
super(SonC, self).__init__(name) sona = SonA()
print(sona.name) sonb = SonB(10)
print(sonb.name) sonc = SonC('sonc',10)
print(sonc.name)
father
Traceback (most recent call last):
File "C:/Users/wiggin/PycharmProjects/AI/1简单的神经网络实现过程/test.py", line 24, in <module>
print(sonb.name)
AttributeError: 'SonB' object has no attribute 'name'
sonc

2.继承中super的调用顺序
继承中super的调用顺序是与MRO-C3的类方法查找顺序一样的
class A:
def __init__(self):
print('A') class B(A):
def __init__(self):
print('B')
super().__init__() class C(A):
def __init__(self):
print('C')
super().__init__() class D(A):
def __init__(self):
print('D')
super().__init__() class E(B, C):
def __init__(self):
print('E')
super().__init__() class F(C, D):
def __init__(self):
print('F')
super().__init__() class G(E, F):
def __init__(self):
print('G')
super().__init__() g = G()
G
E
B
F
C
D
A

Python子类构造函数调用super().__init__()用法说明的更多相关文章

  1. python 子类继承父类的__init__方法

    父类A class A(object): def __init__(self, name): self.name=name print "name:", self.name def ...

  2. C#中,子类构造函数调用父类父类构造函数的正确方式

    正确调用的方式是:

  3. python 子类继承父类__init__(转载)

    转载: http://www.jb51.net/article/100195.htm 前言 使用Python写过面向对象的代码的同学,可能对 __init__ 方法已经非常熟悉了,__init__方法 ...

  4. python3 super().__init__()

    父类不会自动调用__init__方法 class A: def __init__(self): A = 'A' self.a = 'a' print('init A') class B(A): def ...

  5. Python3基础 super 子类调用父类的__init__

             Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

  6. 论super().__init__()的用法

    当我们调用 super() 的时候,实际上是实例化了一个 super 类. super 是个类,既不是关键字也不是函数等其他数据结构,该对象就是专门用来访问父类中的属性的(严格按照继承的关系). -- ...

  7. python基础----多态与多态性、super函数用法、继承原理

    一.多态与多态性                                                                        ㈠多态: 多态指的是一类事物有多种形态, ...

  8. python中super().__init__和类名.__init__的区别

    super().__init__相对于类名.__init__,在单继承上用法基本无差 但在多继承上有区别,super方法能保证每个父类的方法只会执行一次,而使用类名的方法会导致方法被执行多次 多继承时 ...

  9. Python中super的用法【转载】

    Python中super的用法[转载] 转载dxk_093812 最后发布于2019-02-17 20:12:18 阅读数 1143  收藏 展开 转载自 Python面向对象中super用法与MRO ...

随机推荐

  1. mysql 获取当前指定分钟的时间

    SELECT NOW(); MINUTE); 结果:

  2. PG修改参数方法

    1.查看参数文件位置 postgres=# show config_file; config_file ---------------------------------- /data/pgsql_d ...

  3. sql 判断 表 视图 存储过程 存在 然后 删除

    sql 判断 函数 存储过程是否存在的方法 (2010-12-03 10:08:57) 转载▼     下面为您介绍sql下用了判断各种资源是否存在的代码,需要的朋友可以参考下,希望对您学习sql的函 ...

  4. select 后台获取text 并根据text 设置value选中项

    -------获取select 的text string orderNo = this.orderNo.Items[this.orderNo.SelectedIndex].Text; -----根据t ...

  5. PAT-1080 Graduate Admission (结构体排序)

    1080. Graduate Admission It is said that in 2013, there were about 100 graduate schools ready to pro ...

  6. poj3694 连通无向图图加边后有多少桥

    Network Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 10261   Accepted: 3807 Descript ...

  7. DFS序--一般都要转化为顶点到每个点

    There is a rooted tree with n nodes, number from 1-n. Root’s number is 1.Each node has a value ai. I ...

  8. uniapp打包发版到linux服务器步骤----H5端

    最近在写uni-app项目,项目打包部署到服务器后,搞了好一会一直打开是空白页,原来自己有几个地方疏忽了,现把步骤整理一下: 第1步:编辑配置 mainifest.json 文件 tip:运行的基础路 ...

  9. python_Excel_xlwt

    xlwt 创建excel,向excel写入数据,并保存数据 安装 推荐方法: 通过pip 安装,方便简洁,如下图所示: 导入 import xlrd 创建workbook(即excel) book = ...

  10. C语言Printf()规定符号

    %d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x, %X 无符号以十六进制表示的整数 %o 无符号以八进制表示的 ...