• 关于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的属性值修改为父类的属性值

  • 相关阅读:
    HTML5 day_01(8.5)
    springboot+篮球场馆预约系统 毕业设计-附源码211706
    centos7.9安装postgresql12
    使用STM32F103C8T自制freejoy控制板
    大模型时代的具身智能系列专题(九)
    PopupWindow第一次弹出的位置和第二次不一致
    【深度学习】
    starrocks启动和停止和重启脚本
    快速入门Flask微服务架构
    通用接口适配器使用文档须知
  • 原文地址:https://blog.csdn.net/navylhjjlh/article/details/127720367