super方法
用于获取父类的代理对象,以执行已在子类中被重写的父类方法,其语法格式为:
super([类名[, 对象名或类名]])
super方法有两个参数:
第一个参数是要获取父类代理对象的类名。
第二个参数如果传入对象名,则该对象所属的类必须是第一个参数指定的类或该类的子类,找到的父类对象的self会绑定到这个对象上;
如果传入类名,则该类必须是第一个参数指定的类的子类。
在一个类A的定义中调用super方法时,可以将两个参数都省略,此时,super()等价于super(A, self),即获取A的父类代理对象,且获取到的父类代理对象中的self绑定到当前A类对象的self上。
例:super方法使用示例。
1 class Person: #定义Person类 2 def __init__(self, name): #定义构造方法 3 print('Person类构造方法被调用!') 4 self.name=name #将self对象的name属性赋为形参name的值 5 class Student(Person): #以Person类作为父类定义子类Student 6 def __init__(self, sno, name): #定义构造方法 7 print('Student类构造方法被调用!') 8 super().__init__(name) #调用父类的构造方法 9 self.sno=sno #将self对象的sno属性赋为形参sno的值 10 class Postgraduate(Student): #以Student类作为父类定义子类Postgraduate 11 def __init__(self, sno, name, tutor): #定义构造方法 12 print('Postgraduate类构造方法被调用!') 13 super().__init__(sno, name) #调用父类的构造方法 14 self.tutor=tutor #将self对象的tutor属性赋为形参tutor的值 15 if __name__=='__main__': 16 pg=Postgraduate('1810100','李晓明','马红') #创建Postgraduate类对象pg 17 print('学号:%s,姓名:%s,导师:%s'%(pg.sno,pg.name,pg.tutor))
Postgraduate类构造方法被调用!
Student类构造方法被调用!
Person类构造方法被调用!
学号:1810100,姓名:李晓明,导师:马红
提示:将 “super().__init__(sno, name)”改为“super(Postgraduate,self).__init__(sno, name) ”,
程序运行结果完全相同。
披荆斩棘,仗剑天涯
分类:
Python
标签:
python—面向对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通