Python重写__add__方法遇TypeError错误,求助排查(新手类问题)
问题排查:自定义Point类加法运算报错
你遇到的这个TypeError问题其实是个很容易犯的小错误,马上就能解决!
核心原因
Python里用于重载加法运算符的魔法方法是__add__(前后各两个下划线),但你代码里写的是_add_(前后各一个下划线)——就是这个命名错误,让Python无法识别你定义的加法逻辑,所以才会提示“不支持Point类型的+运算”。
修正后的完整代码
只需要把方法名改成正确的__add__就可以正常运行了:
from math import sqrt class Point(object): def __init__(self,x,y,z): self.x = x self.y = y self.z = z def __str__(self): return "%i,%i,%i"%(self.x, self.y, self.z) def __add__(self, other): TotalX = self.x + other.x TotalY = self.y + other.y TotalZ = self.z + other.z return Point(TotalX, TotalY, TotalZ)
测试验证
现在你可以试试这段代码:
Point1 = Point(1,2,3) Point2 = Point(4,5,6) Point3 = Point1 + Point2 print(Point3) # 会输出 5,6,9
最后给你个小提醒:作为Python类的初学者,记得所有魔法方法(比如__init__、__str__这类)都是前后各两个下划线的命名规则,记清楚这个就能避免很多类似的低级错误啦!
内容的提问来源于stack exchange,提问作者Shruti Singhal
相关产品推荐
相关产品推荐

