您的位置: 网站首页> python面向对象> 当前文章
子类继承父类的易错面试题
老董-我爱我家房产SEO2020-08-01200围观,124赞
今日有1个小案例可以测试能不能真正的理解对象、子类、父类的关系。题目如下:
# -*- coding:utf-8 -*- class Person: def __init__(self): self.skill() def skill(self): print('我是基本人类') class TianLong(Person): def skill(self): print('我是武侠人物') if __name__ == "__main__": p = TianLong()
我是武侠人物
1)子类TianLong里面没有__int__方法,所以创建对象的时候会找到父类Person的构造方法。
2)父类的构造方法中执行了self.skill(),那么问题的关键就是此时此刻这个self是谁。
3)此时是子类TianLong在创建对象时调用__init__,因此self是子类对象,自然self.skill()也是执行的子类内部的方法。
始终都要记得对象、子类、父类各自有各自的内存空间,但是因为继承关系的存在使得子类可以去找到父类的属性和方法,所以self虽然写在了父类里面,但是创建子类的对象时self是子类的对象。
如果不好理解,那么上述代码的效果等同于如下代码:
# -*- coding:utf-8 -*- class Person: def __init__(self): self.skill() def skill(self): print('我是基本人类') class TianLong(Person): def __init__(self): self.skill() def skill(self): print('我是武侠人物') if __name__ == "__main__": p = TianLong()
我是武侠人物
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
子类继承父类的易错面试题文章写得不错,值得赞赏