Python自定义Point类调用reflect_x报'NoneType'无print属性问题
问题原因分析
- 报错的核心原因是
reflect_x方法没有显式返回值,Python中函数无显式return时默认返回None,链式调用reflect_x().print()时相当于尝试调用None的print方法,自然触发属性不存在的错误 - 原有
reflect_x方法逻辑错误:直接在方法内打印结果,没有修改实例的y坐标属性,也没有返回实例对象,不符合链式调用的要求
修复后的代码
class Point: def __init__(self, x, y): self.x = x self.y = y def print(self): print((self.x, self.y)) def reflect_x(self): # x轴镜像直接对y取反即可,无需额外判断正负 self.y = -self.y # 返回当前实例,支持链式调用 return self if __name__ == "__main__": p1 = Point(1,4) p1.reflect_x().print() p2 = Point(-3,5) p2.reflect_x().print() p3 = Point(-3,-5) p3.reflect_x().print()
输出验证
运行上述代码会直接输出期望结果:
(1, -4) (-3, -5) (-3, 5)
内容的提问来源于stack exchange,提问作者sari023
相关产品推荐
相关产品推荐

