• 关于Python子类调用父类同名属性和方法的讲解


    //父类

    class Person(object):

            def __init__(self):

                    self.name = "张三"

                    self.age = 30

            def showInfo(self):

                    print(self.name)

                    print(self.age)

    // 子类继承Person类

    class Student(Person):      

            def __init__(self):

                    self.name = "李四"

                    self.age = 20

            def showInfo(self):

                    print(self.name)

                    print(self.age)

            def __str__(self):

                    return "这是Student类的对象"

    //子类调用父类同名属性和方法

            def FuInfo(self):

                    Person.__init__(self)        //大家先想想这行代码的作用

                    print(self)        //该行代码就是为了判断self是否为Student类的对象

                    Person.showInfo(self)

    s = Student()

    s.FuInfo()

    上面的代码是一个很简单的单继承,然后就是采用魔法方法__init__()来初始化属性,并通过shoeInfo()函数来打印属性

    相信大家都看得懂,那么红色字体的代码为什么要有呢,不要可不可以呢

    现在就这个来说明一下:

    父类中的属性是“name = "张三",age = 30”,而子类的属性为“name = "李四", age = 20”.假设没有红色那行代码,直接通过Person.showInfo(self)得到的是子类的属性,因为self表示的是调用该函数的对象,即是对象s,而对象s的属性为“name = "李四", age = 20”。所以没有红色那行代码的话得到的结果就是子类的。

    有了红色那行代码之后,将self的属性通过Person的__init__()重新初始化为“name = "张三",age = 30”,随后采用Person.showInfo(self)得到的就是父类中的属性值了

    总的来说:红色代码的作用就是将对象s的属性值修改为父类的属性值

  • 相关阅读:
    #循循渐进学51单片机#实例练习与经验累积#not.9
    如何写一个sh脚本将一个本地文件通过 scp命令上传到远程的 centos服务器?
    常见面试题-MySQL软删除以及索引结构
    Python 中 Selenium 的 getAttribute() 函数
    scala语法(二)(有java基础速学)
    Xception实现动物识别(TensorFlow)
    nRF52832蓝牙从机
    浅谈 深度学习、机器学习、人工智能
    【尚庭公寓SpringBoot + Vue 项目实战】移动端项目初始化(十九)
    每日N题—数据结构题集
  • 原文地址:https://blog.csdn.net/navylhjjlh/article/details/127720367