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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值