python超类
1.超类
什么是超类:super方法调用的一系列类
什么时候用到超类?
如果子类需要复用父类的代码(属性,方法)时,需要通过超类实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class A: class_name = "A" #类的属性 def __init__( self ,name,age): self .name = name #实例属性 self .age = age #实例属性 def show_me( self ): print (f "hello,我的name是{self.name},我的年龄是{self.age}" ) a = A( "王舞" , 18 ) a.show_me() class B(A): #继承实现扩展 class_name = "B" def __init__( self ,country, * args, * * kwargs): self .country = country super ().__init__( * args, * * kwargs) # 通过超类,实现对父类代码的复用 |
super是不是代表父类?
super()是一个内置函数,返回了超类
沿着继承关系,从祖上一系列类中,寻找成员
super不是代表父类
super能不能跳过父类?
super 可以接受参数:
从哪个类的祖先中查找成员
传递实例对象
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 | class A: class_name = "A" #类的属性 def __init__( self ,name,age): self .name = name #实例属性 self .age = age #实例属性 def show_me( self ): print (f "hello,我的name是{self.name},我的年龄是{self.age}" ) a = A( "王舞" , 18 ) a.show_me() class B(A): #继承实现扩展 class_name = "B" def __init__( self ,country, * args, * * kwargs): self .country = country super ().__init__( * args, * * kwargs) # 通过超类,实现对父类代码的复用 class C(B): class_name = "C" def show_class_name( self ): print ( "自己的class_name属性" , self .class_name) print ( "继承来的class_name属性" , super ().class_name) #超类的class_name print ( "跳过父类后的class_name属性" , super (B, self ).class_name) super (B, self ).show_me() b = B(country = 'china' ,name = "张三" ,age = 19 ) b.show_me() c = C(country = 'china' ,name = "李四" ,age = 20 ) c.show_class_name() |
如何知道类和类的继承关系:print(类名.__mro__)
1 2 | print (C.__mro__) #(<class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)