圆月山庄资源网 Design By www.vgjia.com
一、super函数简介
python内置函数super()主要用于类的多继承中,用来查找并调用父类的方法,所以在单重继承中用不用 super 都没关系;但是,使用 super() 是一个好的习惯。一般我们在子类中需要调用父类的方法时才会这么用;
二、super函数语法
super(type,object-or-type)
参数:
type — 类,一般是类名;
object-or-type — 类,一般是 self;
返回值:无
三、super函数使用
1.案例一:
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): shuopython.com @WeChat Official Account(微信公众号):猿说python @Github:www.github.com @File:python_super.py @Time:2019/12/29 21:25 @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累! """ class A: def m(self): print('A') class B: def m(self): print('B') class C(A): def m(self): print('C') super().m() C().m()
输出结果:
C
A
代码分析:
这样做的好处就是:如果你要改变子类继承的父类(由A改为B),你只需要修改一行代码(class C(A): -> class C(B))即可,而不需要在class C的大量代码中去查找、修改基类名,另外一方面代码的可移植性和重用性也更高。
2.案例二:
# !usr/bin/env python # -*- coding:utf-8 _*- """ @Author:何以解忧 @Blog(个人博客地址): shuopython.com @WeChat Official Account(微信公众号):猿说python @Github:www.github.com @File:python_super.py @Time:2019/12/29 21:25 @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累! """ class Dog: def __init__(self): self.fly = False def print_fly(self): if self.fly: print('不是普通狗,能飞') else: print('普用狗不会飞') class xiaotianquan(Dog): def __init__(self): self.sound = True def print_sing(self): if self.sound: print("汪汪汪") else: print("假狗狗") if __name__ == '__main__': dog = xiaotianquan() dog.print_sing() # 能正常输出 dog.print_fly() # 报错,AttributeError: 'xiaotianquan' object has no attribute 'fly'
代码分析:
虽然子类xiaotianquan继承父类Dog,但是子类直接调用父类的print_fly函数,依然会报错,因为子类没有父类的fly属性,上面代码可以通过在__init__函数中调用super()完成,例如:
class Dog: def __init__(self): self.fly = False def print_fly(self): if self.fly: print('不是普通狗,能飞') else: print('普用狗不会飞') class xiaotianquan(Dog): def __init__(self): super().__init__() # 等效 super(xiaotianquan,self).__init__() self.fly = True self.sound = True def print_sing(self): if self.sound: print("汪汪汪") else: print("假狗狗") if __name__ == '__main__': dog = xiaotianquan() dog.print_sing() dog.print_fly()
输出结果:
汪汪汪
不是普通狗,能飞
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月02日
2024年11月02日
- 张韶涵2024 《不负韶华》开盘母带[低速原抓WAV+CUE][1.1G]
- lol全球总决赛lcs三号种子是谁 S14全球总决赛lcs三号种子队伍介绍
- lol全球总决赛lck三号种子是谁 S14全球总决赛lck三号种子队伍
- 群星.2005-三里屯音乐之男孩女孩的情人节【太合麦田】【WAV+CUE】
- 崔健.2005-给你一点颜色【东西音乐】【WAV+CUE】
- 南台湾小姑娘.1998-心爱,等一下【大旗】【WAV+CUE】
- 【新世纪】群星-美丽人生(CestLaVie)(6CD)[WAV+CUE]
- ProteanQuartet-Tempusomniavincit(2024)[24-WAV]
- SirEdwardElgarconductsElgar[FLAC+CUE]
- 田震《20世纪中华歌坛名人百集珍藏版》[WAV+CUE][1G]
- BEYOND《大地》24K金蝶限量编号[低速原抓WAV+CUE][986M]
- 陈奕迅《准备中 SACD》[日本限量版] [WAV+CUE][1.2G]
- TWINS.2004-SUCHABETTERDAY精美礼盒特别版2CD【英皇娱乐】【WAV+CUE】
- 音乐磁场.1991-1998-音乐磁场系列22CD【瑞星】【WAV+CUE】
- 韦绮姗.1993-LOVE.ME.ONCE.AGAIN【永高创意】【WAV+CUE】