Python中类继承问题?

想问一下图中c.say()先走B类,是相当于把A类覆盖了,还是没有考虑调用A类只考虑了B类... 想问一下图中c.say()先走B类,是相当于把A类覆盖了,还是没有考虑调用A类只考虑了B类 展开
 我来答
老九IT
2020-04-17 · 一双眼睛在网络的世界里浪来浪去
老九IT
采纳数:92 获赞数:405

向TA提问 私信TA
展开全部
如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将“从左向右”按顺序搜索。当调用c.say()方法时,会先搜索C类有没c.say()方法,如果没有就继续搜索,找到c.say()方法后,就会停止搜索后面的c.say()方法。
你用.mro()打印类的层次结构的时候就发现,它先是C类、B类、A类,所以它使用了B类的c.say()方法,如果你把A放到B前面他就会使用A的c.say()方法
点出薄离色扎08
2020-02-25
知道答主
回答量:8
采纳率:0%
帮助的人:3.4万
展开全部

这种问题确实会出现同名的问题。

通过如下的测试方法,可以得出来调用此项,多谢采纳



已赞过 已踩过<
你对这个回答的评价是?
评论 收起
GTA小鸡
高粉答主

2020-02-24 · 醉心答题,欢迎关注
知道大有可为答主
回答量:2.6万
采纳率:78%
帮助的人:1.3亿
展开全部
Python新式类采用MRO算法处理继承关系,当调用c.say()方法时首先查找C类中是否定义了say()方法,若没有继续查找B类中是否定义了say()方法,找到B类中定义有say()方法,因此使用B类的say()方法。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式