Python面向对象三大特性之继承
#基类
class F:
def f1(self):
pass
#派生类
class S(F):
def f2(self):
pass
obj = s()
obj.f2()
obj.f1()
Python 支持多继承,多继承的类里面有相同的方法前面的优先
vim day7-4.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/usr/bin/python # -*- coding:utf-8 -*- class D(): def bar( self ): print 'D.bar' class C(D): def bar( self ): print 'C.bar' class B(D): pass class A(B,C): pass a = A() a.bar() |
输出为D.bar
改成新式类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/usr/bin/python # -*- coding:utf-8 -*- class D( object ): def bar( self ): print 'D.bar' class C(D): def bar( self ): print 'C.bar' class B(D): pass class A(B,C): pass a = A() a.bar() |
输出为C.bar
经典类是深度优先,新式类深度优先
多继承在写代码中用的比较少,但是还是有人会用,笔试中也可能会出现.
PS:只有C,B均继承D才能广度优先,假如C没有继承D则还是使用D里面的bar方法
判断一个类是否新式类看它是否继承了object
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!