老师帮我看下我的理解对不对
来源:5-4 Python中的super函数
SteinLee
2022-03-04 02:52:13
相关截图:

如图,B类继承A类,如果不用super,B类在init初始化后生成实例化对象b,但实际上A类并没有进行实例化,因为如果定义了init初始化的方法,实例化时时一定会执行,这里B中self.name没找到就说明A父类没有实例化
而在B类init中调用self.test(),test()是A类的实例化方法,能运行时因为此事self绑定的是B的实例化对象b,self此时指向的都是实例化的b,等同于b.test()这样调用,b找到的父类的方法调用了它。而test方法内的self.a能打印,是因为在b中没找到从而去父类找到父类属性a从而打印出结果。
这么理解对吗?
1回答
好帮手慕凡
2022-03-04
同学,你好!同学的理解没有问题
1、子类实例化时,父类并不会实例化;
2、当在B类中的__init__中调用self.test( )调用test( )方法时,会先从B( )中寻找test( )方法,如果没有找到才会去父类中寻找;
祝学习愉快~
相似问题