(更新时间)2021年3月24日 python基础知识(super()的使用)
发布日期:2021-06-29 15:14:44
浏览次数:3
分类:技术文章
本文共 1591 字,大约阅读时间需要 5 分钟。
1.super()的使用
class Master(object): def __init__(self): self.kongfu = "古法煎饼果子配方" # 实例变量,属性 def make_cake(self): # 实例方法,方法 print("[古法] 按照 <%s> 制作了一份煎饼果子..." % self.kongfu)# 父类是 Master类class School(Master): def __init__(self): self.kongfu = "现代煎饼果子配方" def make_cake(self): print("[现代] 按照 <%s> 制作了一份煎饼果子..." % self.kongfu) super().__init__() # 执行父类的构造方法 super().make_cake() # 执行父类的实例方法# 父类是 School 和 Masterclass Prentice(School, Master): # 多继承,继承了多个父类 def __init__(self): self.kongfu = "猫氏煎饼果子配方" def make_cake(self): self.__init__() # 执行本类的__init__方法,做属性初始化 self.kongfu = "猫氏...." print("[猫氏] 按照 <%s> 制作了一份煎饼果子..." % self.kongfu) def make_all_cake(self): # 方式1. 指定执行父类的方法(代码臃肿) # School.__init__(self) # School.make_cake(self) # # Master.__init__(self) # Master.make_cake(self) # # self.__init__() # self.make_cake() # 方法2. super() 带参数版本,只支持新式类 # super(Prentice, self).__init__() # 执行父类的 __init__方法 # super(Prentice, self).make_cake() # self.make_cake() # 方法3. super()的简化版,只支持新式类 super().__init__() # 执行父类的 __init__方法 super().make_cake() # 执行父类的 实例方法 self.make_cake() # 执行本类的实例方法damao = Prentice()damao.make_cake()damao.make_all_cake()# print(Prentice.__mro__)
知识点:
子类继承了多个父类,如果父类类名修改了,那么子类也要涉及多次修改。而且需要重复写多次调用,显得代码臃肿。
使用super() 可以逐一调用所有的父类方法,并且只执行一次。调用顺序遵循 mro 类属性的顺序。
注意:如果继承了多个父类,且父类都有同名方法,则默认只执行第一个父类的(同名方法只执行一次,目前super()不支持执行多个父类的同名方法)
super() 在Python2.3之后才有的机制,用于通常单继承的多层继承。
转载地址:https://codeboy.blog.csdn.net/article/details/115185921 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月25日 00时37分48秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
DM365 应用层gpio控制
2019-04-29
Vc6 Button 的WM_LBUTTONDOWN、WM_LBUTTONUP消息响应
2019-04-29
linux i2c子系统abc
2019-04-29
kernel 2.6.32 Unknown symbol 错误
2019-04-29
gstreamer GST_BOILERPLATE_FULL 分析
2019-04-29
力扣的两数之和解法(python3)
2019-04-29
力扣的删除排序数组中的重复项解法(python)
2019-04-29
力扣的移除元素 解法 Python3
2019-04-29
力扣的三数之和解法(Python3)
2019-04-29
力扣的最接近的三数之和解法(Python3)
2019-04-29
力扣的买卖股票的最佳时机 III之解法(Python3)
2019-04-29
LeetCode 合并两个有序链表 解法 (Python)
2019-04-29
力扣的删除排序链表中的重复元素解法 (Python3)
2019-04-29
力扣的环形链表解法 (Python)
2019-04-29
力扣的盛最多水的容器解法 (Python)
2019-04-29
力扣的电话号码的字母组合解法(Python)
2019-04-29
力扣的组合总和解法 (Python)
2019-04-29
力扣的删除链表的倒数第N个节点解法(Python)
2019-04-29
力扣的接雨水解法(Python3)
2019-04-29
HTML5 五种密码框
2019-04-29