您的位置: 网站首页> python面向对象> 当前文章

子类继承父类的易错面试题

老董-我爱我家房产SEO2020-08-01152围观,125赞

  今日有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。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会

文章评论

    子类继承父类的易错面试题文章写得不错,值得赞赏

站点信息

  • 网站程序:Laravel
  • 客服微信:a772483200