Перезаписывает ли возвращаемый конструктор с новыми параметрами объект экземпляра?
Я пытаюсь смоделировать идущего пьяного человека. Я хочу, чтобы он переехал. Когда я позвоню двигаться, я скажу ему переместиться в новое местоположение, обозначенное координатами X и Y, вернув новое местоположение.
У меня проблемы с визуализацией происходящего. Предположительно мне нужно инициализировать объект Location как a = Location(1,2). Я называю движение на объекте? Так что же (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)
1 ответ
Предположительно мне нужно инициализировать объект Location как
a = Location(1,2)
,
Да.
Я называю движение на объекте? Так
a.move(2,2)
?
Да.
И этот метод возвращает новый объект Location со значениями x и y как 1+2,2+2 или 3,4?
Да, с тем, как вы написали метод.
Я что-то переписываю здесь?
Нет, не так, как вы написали метод.
Ваш метод на самом деле не "перемещает" объект Location; он создает новый, другой объект Location с другим x
а также y
, Это может или не может быть то, что вы хотите; это зависит от того, что вы хотите сделать.
Если вы хотите обновить существующий объект, вы должны написать свой метод примерно так:
def move(self, deltaX, deltaY):
"""deltaX and deltaY are floats"""
self.x += deltaX
self.y += deltaY
Это действительно "перезапишет" существующий объект x
а также y
с новыми ценностями.