Python方法重写疑问:为何父类return值未输出?
解决子类继承后同时输出父类与子类方法结果的问题
原代码的问题点:
- Add类的
result方法没有正确计算并返回加法结果,字符串格式也不符合期望 - 子类
multi的result方法定义缺少冒号:,属于语法错误 - 调用父类方法
super().result(1,2)时,仅执行了方法但未接收返回值,也没有输出 - 期望输出里的
multyply是拼写错误,正确应为multiply
修改后的代码:
class Add: def result(self, x, y): # 计算x+y并返回格式化字符串 return f"add: {x + y}" class multi(Add): def result(self, a, b): p = a * b # 获取父类方法的返回值 add_output = super().result(a, b) # 打印父类的计算结果 print(add_output) # 返回子类的乘法结果,外部调用时打印 return f"multiply: {p}" x = multi() print(x.result(2, 3))
运行输出:
add: 5 multiply:6
如果你的需求是父类固定计算1+2得到3,只需要把子类里的super().result(a, b)改成super().result(1, 2)即可,输出就会变成:
add: 3 multiply:6
关于return的疑问解答:
父类方法的return确实返回了值,但你在子类里调用super().result(...)时,没有把返回值存到变量里,也没有打印,所以自然看不到。必须接收这个返回值并处理(比如打印),才能输出父类的结果。
内容的提问来源于stack exchange,提问作者Mohit Mishra
相关产品推荐
相关产品推荐

