我正在试图塑造一个醉酒的人走路。我希望他搬家。当我调用move时,我会告诉他通过返回一个新的位置移动到一个由X和Y坐标表示的新位置。
我无法直观地看到正在发生的事情。据推测,我需要初始化一个Location对象,如a = Location(1,2)。我是否打算移动物体?那么a.move(2,2)?并且该方法返回一个新的Location对象,其x和y值为1 + 2,2 + 2或3,4?我在这里覆盖了什么吗?
class Location(object):
def __init__(self, x, y):
"""x and y are floats"""
self.x = x
self.y = y
def move(self, deltaX, deltaY):
"""deltaX and deltaY are floats"""
return Location(self.x+deltaX, self.y+deltaY)
答案 0 :(得分:2)
据推测,我需要初始化一个像
a = Location(1,2)
这样的位置对象。
是
我是否打算移动物体?那么
a.move(2,2)
?
是
该方法返回一个新的Location对象,其x和y值为1 + 2,2 + 2或3,4?
是的,用你编写方法的方式。
我在这里覆盖了什么吗?
不,不是你编写方法的方式。
你的方法并没有真正"移动" Location对象;它会创建一个具有不同x
和y
的新的不同Location对象。这可能是也可能不是你想要的;这取决于你想做什么。
如果您想更新现有对象,您可以编写如下所示的方法:
def move(self, deltaX, deltaY):
"""deltaX and deltaY are floats"""
self.x += deltaX
self.y += deltaY
这确实会覆盖"对象的现有x
和y
包含新值。