Python入门知识点分享——(二十)继承和方法重写

今天是大年三十,祝大家龙年大吉,当然无论何时何地,我们都不要忘记继续学习。今天介绍的是继承和方法重写这两种面向对象编程特点。继承机制指的是,一个类(我们称其为子类或派生类)可以使用另一个类(我们称其为父类或基类)的属性和方法。这种继承的方式可以简化代码的编写,并且提供了代码复用的机制。只需要在子类名称后用括号加上父类名称就可以达到继承效果。

class Fruit:

    def __init__(self, kind):
        self.kind = kind

    def talk(self):
        print('我爱吃'+self.kind)

apple = Fruit('苹果')
print(apple.talk())

class Dinner(Fruit):

    def __init__(self, kind):
        Fruit.__init__(self, kind)

    def share(self):
        Fruit.talk(self)
        print(self.kind+"作为晚餐分享给大家")

apple = Dinner('苹果')
print(apple.share())

示例中的Fruit就是父类,而Dinner则是子类,Dinner类的初始化方法继承了Fruit类的初始化方法,而share方法也继承了Fruit类的talk方法,语法结构是父类.方法名(形参)。

我爱吃苹果
None
我爱吃苹果
苹果作为晚餐分享给大家
None

需要注意输出语句中的None是因为函数没有明确的返回语句,将print改成return即可解决,提醒大家在编写类时一定要注意返回值。

class Fruit:

    def __init__(self, kind):
        self.kind = kind

    def talk(self):
        return '我爱吃'+self.kind

apple = Fruit('苹果')
print(apple.talk())

class Dinner(Fruit):

    def __init__(self, kind):
        Fruit.__init__(self, kind)

    def share(self):
        Fruit.talk(self)
        return self.kind+"作为晚餐分享给大家"

apple = Dinner('苹果')
print(apple.share())
我爱吃苹果
苹果作为晚餐分享给大家

在pycharm编译器中继承的父类会有这样的标识,点击即可访问所对应的子类。

方法重写是用在从父类继承的方法不能满足子类需求的情况,为了增强泛用性,我们可以对其进行改写,这个过程叫方法的覆盖,也称为方法的重写。 重写的实现过程很简单,只需要将同名的方法在子类中重新编辑成自己想要的代码即可。

class Fruit:

    def __init__(self, kind):
        self.kind = kind

    def talk(self):
        return '我爱吃'+self.kind

class Dinner(Fruit):

    def __init__(self, kind):
        Fruit.__init__(self, kind)

    def talk(self):
        return self.kind+"作为晚餐"

watermelon = Dinner('西瓜')
print(watermelon.talk())
西瓜作为晚餐

可能有同学会问,那这样我换一个函数名不就行了吗,重写的意义在哪呢。实际上重写还要与super函数配合才能最大化效果,super函数能在子类重写父类方法的情况下重新调用父类,达到依次细分执行的效果。

class Fruit:

    def __init__(self, kind):
        self.kind = kind

    def talk(self):
        print('我爱吃'+self.kind)

class Dinner(Fruit):

    def __init__(self, kind):
        Fruit.__init__(self, kind)

    def talk(self):
        super().talk()
        return self.kind+"作为晚餐"

watermelon = Dinner('西瓜')
print(watermelon.talk())
我爱吃西瓜
西瓜作为晚餐

要注意父类的return可能会和子类的return冲突,在这种情况下我们将父类的返回值取消改为直接输出。

重写的标识是向上的红箭头,要和向下灰箭头的继承区分开来。

继承和重写的知识就介绍到这里,我们下期再见。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一章Python基本 6 一Python 简介 6 (一) Python 定义 6 (二) Python程序的执行方式 7 (三)Linux常用命令 7 (四)执行过程 8 (五)解释器类型 8 (六)调试 9 二 数据基本运算 9 (一)pycharm常用快捷键(编译器) 9 (二) 函数 函数名(参数) 10 (三)变量 存储数据 11 (四)del 语句 14 (五)核心数据类型 14 (六)数据类型转换 16 (七)运算符 17 三 语句 23 (一)行 23 (二)pass 语句 23 (三)选择语句 24 (四)循环语句 25 (五)跳转语句 30 (六)print相关函数 30 四 容器类型 30 (一)通用操作 30 (二)字符串 str(不可变序列+字符编码值) 33 (二) 列表 list (预留空间+可变序列+储存变量) 35 (四) 元组 tuple(按需分配+不可变序列+存储变量) 44 (五) 字典 dict (按键取值+可变散列+存储键值对) 46 (六) 集合 set (去重复/数运算+存储键+可变散列) 52 (七)固定集合 frozenset 54 五 函数 function(小而精) 55 (一)pycharm相关设置 55 (二)定义 55 (三)作用 56 (四)定义函数 56 (五)调用函数 56 (六)返回值 57 (七)可变/不可变类型在传参时的区别 58 (八)函数参数 59 六 作用域LEGB 66 (一)变量名的查找规则 66 (二)局部变量 66 (三)全局变量 66 (四)global 语句 67 (五)nonlocal 语句(外部嵌套) 67 第二章 面向对象 Object Oriented 68 一 概述 68 (一)面向过程 68 (二)面向对象 68 二 类和对象 69 (一)语法 70 (二)实例成员 72 (三)类成员 75 (四)静态方法 76 (总结)类和对象 77 三 三大特征 78 (总结)三大特征 78 (一)封装(按需求分,按行为分) 78 (二)继承(抽象 -> 统一 -> 隔离) 86 (三) 多态 90 四 设计原则 95 (总结)设计原则 95 (一)开-闭原则(目标、总的指导思想,增加不改变原代码) 95 (二)类的单一职责(一个类的定义) 96 (三)依赖倒置(依赖抽象) 96 (四)组合复用原则(复用的最佳实践) 96 (五)里氏替换(扩展重写,继承后的重写,指导继承的设计) 96 (六)迪米特法则(用父类减少传递数据量,类与类交互的原则) 97 第三章 模块包+函数式编程 98 通用:快捷键 98 一 模块 Module 98 (一)定义: 包含一系列数据、函数、类的文件,通常以.py结尾。 99 (二)作用 99 (三)导入 99 (四) 模块变量 100 (五)加载过程 100 (六)分类 101 (七)搜索顺序 102 二 包package 102 (一)定义:将模块以文件夹的形式进行分组管理。 102 (二)作用:让一些相关的模块组织在一起,使逻辑结构更加清晰。 102 (三)导入 102 (四) 搜索顺序 103 三 异常处理Error 104 (一)异常 104 (二)处理 105 (三)raise 语句 106 (四)自定义异常:为了快速传递错误信息 108 四 迭代 108 (一)可迭代对象iterable 109 (二) 迭代器对象iterator 110 五 生成器generator 113 (一)生成器函数 114 (二)内置生成器 116 (三)生成器表达式 116 六 函数式编程 118 (一)函数作为参数 119 (二)内置高阶函数 122 (三) 函数作为返回值 124

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值