super().init()含义(单继承,即只有一个父类)
测试一:
在没有super(A, self).init()时调用A的父类Root的属性和方法(方法里不对Root数据进行二次操作)。
class Root(object):
def __init__(self):
self.x = "这是属性"
def fun(self):
print("这是方法")
class A(Root):
def __init__(self):
print("实例化时执行")
运行结果:
可以看到此时父类的方法继承成功,可以使用,但是父类的属性却未继承,并不能用。
测试二:
在没有super(A,self).init()时调用A的父类Root的属性和方法(方法里对Root数据进行二次操作)。
class Root(object):
def __init__(self):
self.x = "这是属性"
def fun(self):
print(self.x)
print("这是方法")
class A(Root):
def __init__(self):
print("实例化时执行")
运行结果:
此时报错和测试一相似,果然,还是不能用父类的属性。
测试三:加入super(A, self).init()时调用A的父类Root的属性和方法(方法里对Root数据进行二次操作)
class Root(object):
def __init__(self):
self.x = "这是属性"
def fun(self):
print(self.x)
print("这是方法")
class A(Root):
def __init__(self):
super(A,self).__init__()
print("实例化时执行")
运行结果:
此时A已经成功继承了父类的属性,所以super().init()的作用也就显而易见了,就是执行父类的构造函数,使得我们能够调用父类的属性。
上面是单继承情况,我们也会遇到多继承情况,用法类似,但是相比另一种Root.init(self),在继承时会跳过重复继承,节省了资源。
参考博客:https://blog.csdn.net/qq_38787214/article/details/87902291