小福利,python中子类继承父类的一些注意点

大家好,我是天空之城,今天给大家带来小福利,python中子类继承父类的一些注意点

class Person:
    def __init__(self):
        self.name = "jack"
class Student(Person):
    def __init__(self):
        super(Student, self).__init__()  #这一行不可以省略
        self.name='tom'
        self.school = "一中"
stu = Student()
print("学生的姓名是:",stu.name)


在上面这段代码中,子类中super(Student, self).__init__()  #这一行不可以省略,因为如果子类中有同名方法就会覆盖父类的方法,父类的方法和属性彻底不可用,也就没有必要继承父类了。

所以这里就需要调用一下父类的方法,子类才能够继承父类的所有属性和方法,在此基础上,子类进行重写,才会使得能够调用子类自己定义的方法,同时可以调用没有改写的父类的方法。

如果不是同名方法,省略了这一行,那么调用的就是父类的属性和方法,而不是子类定义的属性和方法,除非直接调用子类自己定义的方法,详情见下图。

子类重写父类init方法,重新定义了属性
子类重写父类init方法,重新定义了属性

这里子类方法覆盖了父类的方法
在这里插入图片描述
下面直接报错了,子类覆盖父类方法,并且子类没有重新定义属性,
在这里插入图片描述
这里把子类方法名改成了hehe,与init不重名,子类直接继承父类的属性
在这里插入图片描述

这里没有调用父类的init方法,导致子类自己定义的属性也没法使用,还是代用的父类的属性和方法
在这里插入图片描述
子类直接继承父类属性,不管有没有代用父类的init方法
在这里插入图片描述
在这里插入图片描述
子类即使改写name属性也不成功,因为hehe方法与父类的init方法不同
在这里插入图片描述
只有直接调用子类定义的hehe方法才行,子类定义的属性才有用
在这里插入图片描述
这样就改写成功了
在这里插入图片描述
如果不调用子类的hehe方法,还是显示父类的属性
在这里插入图片描述

只有这样才能调用子类自己定义的属性和方法
在这里插入图片描述
或者这样
在这里插入图片描述
如果子类没有改写,那么就直接调用父类的属性了
在这里插入图片描述
如果也没有调用父类方法,那么就直接报错了
在这里插入图片描述
这里没有调用父类的init方法,子类直接改写name属性,也是可以的
在这里插入图片描述
相信经过以上的对比,大家应该能明白了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值