老师帮我看下我的理解对不对

来源:5-4 Python中的super函数

SteinLee

2022-03-04 02:52:13

相关截图:

https://img.mukewang.com/climg/62210a7b092e971113861358.jpg

如图,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( )方法,如果没有找到才会去父类中寻找;

祝学习愉快~

0

0 学习 · 4469 问题

查看课程