You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python类继承代码输出异常,10、7来源及返回None原因排查

问题原因解析

1. 输出10和7的来源

当你在Child.py中执行from ParentClass import Parent时,Python会执行ParentClass.py文件中的所有顶层代码(不属于类、函数内部的代码):

  • obj1 = Parent(4,6)调用Add方法得到4+6=10,执行print(obj1.Add())输出10
  • obj2 = Parent(9,2)调用Sub方法得到9-2=7,执行print(obj2.Sub())输出7
    这两行输出是导入Parent模块时自动执行测试代码产生的。

2. 输出None的原因

你定义的getData方法没有显式声明return返回值,Python中所有函数/方法如果没有写return语句,默认会返回None,你最后执行print(obj.getData())实际就是打印这个默认返回的None。


修正方案

方案1:避免导入ParentClass时输出测试内容

把ParentClass.py中的测试代码放到主程序判断块中,只有直接运行ParentClass.py时才会执行测试代码,被导入时不会运行:

class Parent:
    var1 = 100

    def __init__(self, a, b):
        self.firstNUm = a
        self.secondNUm = b

    def Add(self):
        return self.firstNUm + self.secondNUm

    def Sub(self):
       return self.firstNUm - self.secondNUm

if __name__ == "__main__":
    obj1 = Parent(4, 6)
    print(obj1.Add())
    obj2 = Parent(9, 2)
    print(obj2.Sub())

方案2:让getData返回计算结果

修改Child.py中的getData方法,添加return语句:

def getData(self):
    return self.var1 + self.Sub() + self.Add()

修改后运行Child.py会输出计算结果100 + (8-3) + (8+3) = 116。


内容的提问来源于stack exchange,提问作者Ansuman Prasad Pati

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:06:04