心蓝的博客 心蓝的博客
首页
  • 零基础

    • python零基础入门
  • 专项

    • 正则表达式
  • web框架

    • django框架
    • drf
技术
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档

心蓝

人生苦短,我用python
首页
  • 零基础

    • python零基础入门
  • 专项

    • 正则表达式
  • web框架

    • django框架
    • drf
技术
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
  • 编程基础

  • python开发环境搭建

  • 基本数据类型

  • 程序流程控制

  • 函数与代码复用

  • 面向对象

    • 类和对象
    • 属性
    • 方法
    • 继承
    • super函数
    • 多态
    • 私有化
    • 自省与反射机制
  • 模块和包

  • 文件IO操作

  • python零基础入门
  • 面向对象
心蓝
2022-12-23

super函数

# super()函数

重写了父类方法后如果又要调用父类的方法怎么办呢?

还记得调用对象方法时可以通过类调用吗?看下面的案例:

class A:
    def func(self):
        print('A')

class B(A):
    def func(self):
        A.func(self)			# 通过硬编码直接通过A.func调用
        print('B')

b = B()
b.func()
1
2
3
4
5
6
7
8
9
10
11

输出:

A
B
1
2

但是这样有个问题,如果后面修改了B类继承的父类为其他类时,这里也需要跟着修改。

通过super()函数就可以动态的找到父类中的方法。

class A:
    def func(self):
        print('A')

class B(A):
    def func(self):
        super().func()			# super()函数会自动处理继承关系
        print('B')

b = B()
b.func()
1
2
3
4
5
6
7
8
9
10
11

这样,修改了B类继承的父类为其他类时,这里不需要修改。

注意当继承链很长或者多继承时,所有的子类对应方法中都要通过super()去保证调用链。

本文完,感谢你的耐心阅读,如有需要可加我微信,备注「博客」并说明原因,我们一起进步,下次见。

上次更新: 2022/12/26, 16:59:39
继承
多态

← 继承 多态→

最近更新
01
requests让接口测试如此简单 原创
03-31
02
最简明的python正则教程
03-30
03
pycharm激活码
12-30
更多文章>
Theme by Vdoing | Copyright © 2019-2025 心蓝
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式