0

0

python子类如何重用父类功能

舞姬之光

舞姬之光

发布时间:2025-10-01 14:59:02

|

276人浏览过

|

来源于php中文网

原创

使用super()可复用父类功能。1. 调用父类方法:通过super().method()执行父类逻辑后再扩展;2. 初始化时复用:子类__init__中调用super().__init__()确保父类属性设置;3. 增强而非覆盖:在保留父类行为基础上添加新逻辑;4. 多重继承中按MRO顺序调用父类方法,避免重复。合理使用super()提升代码可维护性。

python子类如何重用父类功能

子类重用父类功能是面向对象编程中的常见需求。Python 提供了多种方式让子类在不重复编写代码的前提下,复用和扩展父类的功能。核心方法是使用 super() 函数。

1. 使用 super() 调用父类方法

在子类中,可以通过 super() 获取父类的引用,调用父类已定义的方法,实现功能复用。

例如:

class Animal:
    def speak(self):
        print("Animal makes a sound")

class Dog(Animal):
    def speak(self):
        super().speak() # 先执行父类逻辑
        print("Dog barks")

dog = Dog()
dog.speak()

输出:

立即学习Python免费学习笔记(深入)”;

Animal makes a sound
Dog barks

这样既保留了父类行为,又添加了子类特有的功能。

2. 在初始化中复用父类 __init__

子类常需要扩展父类的初始化逻辑。通过 super().__init__() 可以确保父类的属性被正确设置。

示例:

class Person:
    def __init__(self, name):
        self.name = name

class Student(Person):
    def init(self, name, student_id):
        super().init(name) # 复用父类初始化
        self.student_id = student_id

s = Student("Alice", "S123")
print(s.name) # Alice
print(s.student_id) # S123

3. 选择性增强而非完全覆盖

有时你不想完全替换父类方法,而是在其基础上增强。这时可以在子类方法中调用 super().method_name(),再追加新逻辑。

名品购物网店系统
名品购物网店系统

适合品牌专卖店专用,从前台的美工设计就开始强调视觉形象,有助于提升商品的档次,打造网店品牌!后台及程序核心比较简洁,着重在线购物,去掉了繁琐的代码及垃圾程式,在结构上更适合一些中高档的时尚品牌商品展示. 率先引入语言包机制,可在1小时内制作出任何语言版本,程序所有应用文字皆引自LANG目录下的语言包文件,独特的套图更换功能,三级物品分类,购物车帖心设计,在国内率先将购物车与商品显示页面完美结合,完

下载

比如日志记录、权限检查等场景很适合这种方式。

4. 多重继承中的 super() 行为

当涉及多个父类时,Python 使用 MRO(方法解析顺序)决定调用哪个父类的方法。super() 会按 MRO 自动找到下一个类,避免重复调用。

示例:

class A:
    def process(self):
        print("A.process")

class B:
    def process(self):
        print("B.process")

class C(A, B):
    def process(self):
        super().process()
        print("C.process")

c = C()
c.process()

输出:

立即学习Python免费学习笔记(深入)”;

A.process
C.process

因为 A 在 MRO 中排在 B 前面,所以 super().process() 调用了 A 的方法。

基本上就这些。合理使用 super(),能让子类干净地复用父类功能,同时保持代码可维护性。注意不要遗漏对父类关键逻辑的调用,特别是在初始化时。

相关文章

python速学教程(入门到精通)
python速学教程(入门到精通)

python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

187

2023.09.27

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

53

2025.11.27

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

53

2025.11.27

go语言 面向对象
go语言 面向对象

本专题整合了go语言面向对象相关内容,阅读专题下面的文章了解更多详细内容。

56

2025.09.05

java面向对象
java面向对象

本专题整合了java面向对象相关内容,阅读专题下面的文章了解更多详细内容。

53

2025.11.27

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

489

2024.01.03

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

16

2026.02.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.8万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号