Python 返回带有新参数的构造函数是否覆盖实例对象?
我试着模仿一个醉汉走路。我要他离开。当我调用move时,我会告诉他通过返回一个新位置,移动到一个由X和Y坐标表示的新位置 我很难想象发生了什么。大概我需要初始化一个Location对象,比如a=Location(1,2)。我要在对象上调用move吗?那么a.移动(2,2)?该方法返回一个新的Location对象,其x和y值为1+2,2+2或3,4?我在这里重写什么吗Python 返回带有新参数的构造函数是否覆盖实例对象?,python,oop,object,return,Python,Oop,Object,Return,我试着模仿一个醉汉走路。我要他离开。当我调用move时,我会告诉他通过返回一个新位置,移动到一个由X和Y坐标表示的新位置 我很难想象发生了什么。大概我需要初始化一个Location对象,比如a=Location(1,2)。我要在对象上调用move吗?那么a.移动(2,2)?该方法返回一个新的Location对象,其x和y值为1+2,2+2或3,4?我在这里重写什么吗 class Location(object): def __init__(self, x, y): """
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)
大概我需要初始化一个Location对象,比如a=Location(1,2)
对
我要在对象上调用move吗?所以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)
不,不是你写方法的方式
您的方法不会真正“移动”位置对象;它使用不同的x
和y
创建一个新的、不同的位置对象。这可能不是你想要的;这取决于你想做什么
如果要更新现有对象,可以编写如下方法:
def move(self, deltaX, deltaY):
"""deltaX and deltaY are floats"""
self.x += deltaX
self.y += deltaY
这确实会用新值“覆盖”对象的现有
x
和y
。谢谢!我习惯用Java的增量思维。整个init语法和调用本身不是构造函数的东西(在Java意义上)让我感到混乱。