对于Python中 super().__init__()的测试和理解

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值