Python 继承深度解析 —— 从 __base__ 到 super() 的完整实践
前言继承是面向对象编程OOP的三大特性之一它允许子类复用父类的属性和方法从而实现代码的复用与扩展。在 Python 中一切类默认都是object的子类。本文将结合一段完整的代码示例深入剖析 Python 继承的核心概念包括__base__/__bases__的用法、super()调用父类方法、以及__str__与__repr__在继承中的重写实践。一、继承的基本概念在 Python 中继承的语法非常简洁class 父类: pass class 子类(父类): pass父类基类、超类被继承的类子类继承父类的类我们可以通过两个特殊属性来查看类的父类信息属性说明类名.__base__获取单个父类类名.__bases__获取父类元组class Person(object): pass print(Person.__base__) # class object print(Person.__bases__) # (class object,)二、从简单继承开始我们先定义一个Person类包含姓名和年龄属性以及get_info方法class Person(object): def __init__(self, name, age): self.name name self.age age def get_info(self): return fname:{self.name}, age:{self.age}Person类默认继承自object拥有所有对象的基本行为。三、子类继承与super()调用父类现在定义一个SuperPerson子类在父类的基础上增加skill属性class SuperPerson(Person): def __init__(self, name, age, skill): super().__init__(name, age) # 调用父类的 __init__ self.skill skill def get_info(self): return f{super().get_info()}, skill:{self.skill}这里的关键是super()super()返回一个代理对象用于调用父类的方法super().__init__(name, age)调用了父类Person的构造函数完成name和age的初始化super().get_info()调用了父类的get_info方法在此基础上追加子类的skill信息为什么要用super()在单继承中直接使用父类名调用如Person.__init__(self, name, age)也可以工作。但在多重继承中super()会遵循MRO方法解析顺序规则避免重复调用和钻石继承问题。因此推荐始终使用super()即使是在单继承场景中。四、重写__str__与__repr____str__和__repr__是 Python 中用于定义对象字符串表示的两个魔术方法方法面向对象调用时机__str__最终用户print()、str()、format()__repr__开发者repr()、控制台直接输出、调试重要规则如果没有定义__str__Python 会回退调用__repr__。父类中定义class Person(object): def __str__(self): return Person def __repr__(self): return Person()测试输出p1 Person(马克思, 20) print(p1, [p1]) # Person [Person()]print(p1)调用__str__输出Person列表展示时调用__repr__输出Person()子类中重写并复用父类class SuperPerson(Person): def __str__(self): return fSuper{super().__str__()} def __repr__(self): return fSuper{super().__repr__()}这里通过super()调用了父类的__str__和__repr__并在其基础上添加了Super前缀sp1 SuperPerson(绿巨人, 30, 变身) print(sp1, [sp1]) # SuperPerson [SuperPerson()]这样做的好处是复用父类逻辑避免重复编码保持一致性子类的字符串表示在父类基础上扩展易于维护父类逻辑变更时子类自动同步五、完整代码回顾class Person(object): def __init__(self, name, age): self.name name self.age age def __str__(self): return Person def __repr__(self): return Person() def get_info(self): return fname:{self.name}, age:{self.age} class SuperPerson(Person): def __init__(self, name, age, skill): super().__init__(name, age) self.skill skill def __str__(self): return fSuper{super().__str__()} def __repr__(self): return fSuper{super().__repr__()} def get_info(self): return f{super().get_info()}, skill:{self.skill}六、总结知识点要点__base__/__bases__查看类的父类信息super()调用父类方法支持 MRO推荐优先使用__str__vs__repr____str__面向用户__repr__面向开发者继承中的方法重写使用super()复用父类逻辑保持代码 DRY继承让代码复用变得简单而super()则是让继承变得优雅的关键工具。掌握这些基础你就能在 Python 面向对象编程中游刃有余。

相关新闻

DINOv2终极选择指南:5大场景教你如何快速选择最佳视觉模型

DINOv2终极选择指南:5大场景教你如何快速选择最佳视觉模型

DINOv2终极选择指南:5大场景教你如何快速选择最佳视觉模型 【免费下载链接】dinov2 PyTorch code and models for the DINOv2 self-supervised learning method. 项目地址: https://gitcode.com/GitHub_Trending/di/dinov2 在计算机视觉的世界里,…

2026/8/4 3:19:09 阅读更多 →
OpenClaw智能体安全部署指南:从权限隔离到生产环境加固

OpenClaw智能体安全部署指南:从权限隔离到生产环境加固

1. 从“小龙虾”到智能体:OpenClaw初印象与安全定位最近在AI智能体这个圈子里,OpenClaw(大家戏称“小龙虾”)的热度是肉眼可见地涨起来了。无论是技术社区还是各种尝鲜群,讨论怎么部署、怎么接入飞书微信、怎么玩转它的…

2026/8/4 3:19:09 阅读更多 →
微信聊天记录本地数据库解密与导出:从EnMicroMsg.db到可读HTML的完整方案

微信聊天记录本地数据库解密与导出:从EnMicroMsg.db到可读HTML的完整方案

1. 项目概述:为什么我们需要一个终极备份方案?微信,作为我们日常沟通的绝对主力,承载了太多重要的信息:家人的叮嘱、工作的交接、朋友的约定,乃至那些承载着珍贵回忆的图片和视频。然而,微信官方…

2026/8/4 3:19:09 阅读更多 →

最新新闻

前端时间同步方案:从Date对象到高精度时间校准实战

前端时间同步方案:从Date对象到高精度时间校准实战

1. 项目概述:一个看似简单却暗藏玄机的日常需求在Web前端开发中,获取时间是一个高频到几乎被忽略的基础操作。无论是展示文章发布时间、倒计时活动,还是记录用户操作日志,我们都会不假思索地写下new Date()。这个需求简单到似乎不…

2026/8/4 4:02:32 阅读更多 →
CBCX:把服务体系做到位——框架复盘与提示整理

CBCX:把服务体系做到位——框架复盘与提示整理

外汇市场信息更新频繁,平台口碑的形成更依赖长期一致性:入口是否好找、说明是否前后一致、提示是否稳定出现。围绕CBCX,下面从稳定体验与信息呈现等角度做一次正面观察。在外汇相关服务中,读者最在意的通常是信息是否清楚、提示是…

2026/8/4 4:02:32 阅读更多 →
微信小游戏开发全攻略:从技术选型到上线运营的实战指南

微信小游戏开发全攻略:从技术选型到上线运营的实战指南

最近在和一些独立开发者聊天,发现一个挺有意思的现象:很多人一提到“微信小游戏”,第一反应就是“哦,那个做流量主广告的”。好像它的全部价值,就是靠点击和激励视频赚点零花钱。这其实是一个挺大的误解。我花了不少时…

2026/8/4 4:02:32 阅读更多 →
8.2华为OD机试真题 新系统 - 计算电动车续航里程 (Java/Py/C/C++/Js/Go)

8.2华为OD机试真题 新系统 - 计算电动车续航里程 (Java/Py/C/C++/Js/Go)

计算电动车续航里程 2026 华为OD机试真题 8月2日华为OD上机新系统考试真题 100 分题型 点击查看华为 OD 机试真题完整目录:2026最新华为OD机试新系统卷 双机位C卷 真题题库目录|全覆盖题库 逐点算法考点详解 题目描述 给定电动车的电池容量 capacity…

2026/8/4 4:02:32 阅读更多 →
基恩士KV8000 PLC与XH16EC总线系统的高效ST编程实践

基恩士KV8000 PLC与XH16EC总线系统的高效ST编程实践

1. 基恩士KV8000 PLC与XH16EC总线系统概述基恩士KV8000系列PLC在工业自动化领域一直以高可靠性和卓越性能著称。作为日系PLC的代表产品之一,KV8000采用了独特的硬件架构设计,其背板总线带宽可达1Gbps,支持最多16个扩展模块。我曾在汽车焊装生…

2026/8/4 4:02:32 阅读更多 →
桌面智能自动化神器 OpenClaw ,新手零基础一键部署落地

桌面智能自动化神器 OpenClaw ,新手零基础一键部署落地

核心亮点:提供全程可视化的图形操作界面,自动补齐全套运行依赖,数据独立存储于本地设备,兼容多款主流大模型,并采用轻量化的 45.7MB 整合压缩包。 教程适配:OpenClaw | 适配 Windows 10/11 与 macOS 双系统…

2026/8/4 4:01:31 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/3 4:36:35 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →