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())输出10obj2 = 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
相关产品推荐
相关产品推荐

