有关 Python3 的 重载运算符 与 引用问题
假设我有这样一个需求:
给定三点:A、B、C;其中A与B坐标已知,C点坐标 = A点 + B点
当A点坐标发生变化时,C点也应该发生变化。
我是这样写的:
class Point:
def __init__(self, coordinate:tuple):
self.x = coordinate[0]
self.y = coordinate[1]
def __repr__(self):
return "(%.2f, %.2f)" % (self.x, self.y)
def __add__(self, other:Point):
if isinstance(other, Point):
x = self.x + other.x
y = self.y + other.y
return Point(coordinate=(x,y))
然后定义A与B的坐标 以及C的关系:
A = Point((1,1))
B = Point((4,1))
C = A + B
此时C点的坐标应该为:(5,2)
但我进行如下操作后
A.x=5
C点的坐标并没有发生变化...原因我知道,因为__add__给C返回的是一个新的Point对象。
我想请教各位,如何设计,才能让C点的坐标根据A点/B点的坐标变化而变化呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
把C和AB关联起来就可以了