五分钟掌握Python中super()函数的用法
五分钟内与您分享阅读python中super()函数的经验与技巧,具体内容如下:
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

1、 在 Python 的类继承结构中,当子类继承父类并重写方法时,若需要调用父类的同名方法,通常可以使用两种方式:super() 或直接使用父类名称。具体使用方法可参考以下代码示例:

2、 Base 类中定义了一个 move 方法,用于调整对象的位置。如果我们希望在子类中增加记录每次移动偏移量的功能,则可以通过重写 move 方法实现:先执行自定义逻辑(如记录偏移信息),然后调用父类原有的 move 方法完成实际位置变化,从而避免重复编写移动逻辑。例如,在上述示例中我们通过 super 调用了父类的方法,但是否也可以直接使用 Base 类名进行调用?
立即学习“Python免费学习笔记(深入)”;

3、 当 Base 类中的方法需要调用其父类的方法时,必须手动传入 self 参数。之前我们了解过,普通类方法的第一个参数默认是 self,当我们通过实例调用方法时,self 会自动传递。但如果使用类名来调用方法,则必须显式地传入当前对象作为第一个参数。那么这两种方式是否存在差异?答案是肯定的。为了更清楚理解它们之间的区别,我们先来看一下 super 的定义。

4、 可以看到,super 提供了四种调用形式:
5、 1. super():等价于 super(当前类名, self),这是 Python 3 中最推荐的方式。
6、 2. super(type):不绑定任何实例对象,适用于类方法或静态方法的场景。
7、 3. super(type, obj):绑定到指定的对象 obj,要求 obj 是 type 类型或其子类的实例。
8、 4. super(type, type2):绑定到类型 type2,要求 type2 必须是 type 的子类。
9、 这里主要讲解 super() 和 super(type, obj),因为这两个是最常使用的格式。在前面的例子中,super 的行为看起来和直接调用父类 Base 的方法相似。接下来再通过另一个例子加深理解。

10、 四个类中,为什么 Base.__init__ 被执行了两次?这是因为 Sub.__init__ 中同时调用了 Device1 和 Device2 的初始化函数。那是否可以让它只执行一次?如果仅调用 Device1.__init__,Base 是否会被正确初始化?结果只会调用一次 Base 初始化函数。

11、 因为缺少 name2 属性,并且 Device2 的构造函数 __init__ 没有被调用,导致 name2 未定义。如果此时将 Base 替换为 super,又会产生怎样的效果?这值得进一步研究。

相关攻略
Pywinrm 通过Windows远程管理(WinRM)协议,让Python能够像操作本地一样执行远程Windows命令,真正打通了跨平台管理的最后一公里。 在混合IT环境中,Linux机器管理Wi
早些时候,聊过 Python 领域那场惊心动魄的供应链攻击。当时我就感叹,虽然我们 JavaScript 开发者对这类套路烂熟于心,但亲眼目睹这种规模的“投毒”还是头一次。 早些时候,聊过 Pyth
Toga 是 BeeWare 家族的核心成员,号称“写一次,跑遍所有平台”,而且用的是系统原生控件,不是那种一看就是网页套壳的界面 。 写了这么多年 Python,你是不是也想过:要是能一套代码跑
异常处理的核心:让错误在正确的地方被有效处理。正确的地方,就是别在底层就把异常吞了,也别在顶层还抛裸奔的 Exception。 异常处理写得好,半夜不用起来改 bug。1 你是不是也这么干过?tr
1 Skills机制概述 提起OpenClaw的Skills机制,不少人可能会把它想象成传统意义上的可执行插件。其实,它的内涵要更精妙一些。 简单说,Skills本质上是一套基于提示驱动的能力扩展机制。它并不是一个可以独立“跑”起来的程序模块,而是通过一份结构化描述文件(核心就是那个SKILL m
热门专题
热门推荐
加密货币行业翘首以盼的监管里程碑,终于有了实质性进展。美国证券交易委员会(SEC)主席保罗·阿特金斯(Paul Atkins)近日证实,那份允许加密项目在早期获得注册豁免权的“安全港”框架提案,已经正式送抵白宫,进入了最终审查阶段。 在范德堡大学与区块链协会联合举办的数字资产峰会上,阿特金斯透露了这
微策略Strategy报告:第一季录得144 6亿美元浮亏 再斥资约3 3亿美元买进4871枚比特币 市场震荡的威力有多大?看看Strategy的最新季报就明白了。根据其最新向美国证管会(SEC)提交的8-K报告,受市场剧烈波动影响,这家公司所持的比特币在第一季度录得了一笔惊人的数字——144 6亿
稳定币巨头Tether的动向,向来是加密世界的风向标。这不,它向Web3基础设施的版图扩张,又迈出了关键一步。公司执行长Paolo Ardoino在社交平台X上透露,其工程团队正在全力“烹制”一个新项目——去中心化搜索引擎 “Hypersearch”。这个消息一出,立刻引发了行业的广泛猜想。 采用D
基地位于Coinbase旗下以太坊Layer2网络Base的Seamless Protocol,日前正式宣告了服务的终结。这个曾经吸引了超过20万用户的原生DeFi借贷协议,在运营不到三年后,终究没能跑赢时间。它主打的核心产品是Integrated Leverage Markets(ILMs)——一
PAAL代币揭秘:深度解析Web3社区治理的核心钥匙 在去中心化自治组织的浪潮中,谁真正掌握了项目的话语权?PAAL代币提供了一套系统化的答案。它不仅是生态内流转的价值媒介,更是开启链上治理大门的核心凭证。通过持有并质押PAAL代币,用户能够对协议升级、资金分配乃至战略方向等关键事务投出决定性的一票





