python 子类调用父类的三种方法,python中子类调用父类方法几点细节(正确使用super)
近期在写python程序时意外发现了子类调用父类方法的一些细节问. 仔细学习做笔记如下:
子类的方法要显示调用父类的方法,不调用系统不会默认调用(不同于java)
调用方法有3种, 如下面的程序中的标记的 12,13,14 三行(任何一种方法都可以)
a) persion.__init__(self, name, age)
b) super(student, self).__init__(name, age)
c) super().__init__(name, age)
a方法是传统的调用方法, b是改进后的方法. 区别是: 当基类的名字有改变时, a方法子类的中的相应代码也要改. b就不用改了, 所以b方法要好一些. 方便代码的维护. c方法呢, 是python3.x以上版本用的. 我没有测试, 应当是可以的
需要注意的是; 如果使用super调用父类方法, 则父类必须是新式类.
新式类:就是所有类都必须继承的类,如果什么都不想继承,就继承到object类
经典类:没有父类
比如下我下面的代码3行如果没有object字样, 则13行会报错: TypeError: must be type, not classobj
我写的试验程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 1 #!/usr/bin/evn python 2 3class persion(): 4 def __init__( self , name, age): 5 self .name = name 6 self .age = age 7 def talk( self ): 8 print "i am a persion. name: %s, age: %s" % ( self .name, self .age) 9 10class student(persion): 11 def __init__( self , name, age, school): 12 #persion.__init__(self, name, age) 13 super (student, self ).__init__(name, age) 14 #super().__init__(name, age) 15 #以上3种方法都可以用. 提供第2行的. 第3行在python3.x版本支持 16 self .school = school 17 def talk( self ): 18 print ( 'i am a student. name: %s, age: %s, school: %s' % ( self .name, str ( self .age), self .school)) 19 20if __name__ = = "__main__" : 21 aPer = persion( "lin" , 2 ) 22 aPer.talk() 23 aStu = student( "lin" , 3 , "MIddleSchool" ) 24 aStu.talk() |
结果:
i am a persion. name: lin, age: 2
i am a student. name: lin, age: 3, school: MIddleSchool
转载自:https://blog.csdn.net/weixin_30013175/article/details/116168584
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix