2014-11-06 2 views
0

Я пытаюсь моделировать пьяного человека, идущего. Я хочу, чтобы он двигался. Когда я вызову 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) 

ответ

2

Предположительно мне нужно инициализировать объект Расположение как a = Location(1,2).

Да.

Как я могу назвать перемещение по объекту? Итак, a.move(2,2)?

Да.

И этот метод возвращает новый объект местоположения с значениями x и y как 1 + 2,2 + 2 или 3,4?

Да, так, как вы написали метод.

Я что-то переписываю здесь?

Нет, не так, как вы написали метод.

Ваш метод действительно не «перемещает» объект «Место»; он создает новый, другой объект местоположения с разными x и y. Это может быть или не быть тем, чего вы хотите; это зависит от того, что вы хотите сделать.

Если вы хотите обновить существующий объект, вы должны написать свой метод что-то вроде этого:

def move(self, deltaX, deltaY): 
    """deltaX and deltaY are floats""" 
    self.x += deltaX 
    self.y += deltaY 

Это действительно «перезаписать» объект существующих x и y с новыми значениями.

+0

Спасибо! Я привык думать о приращениях Java. Весь синтаксис инициализации и вызов чего-то, что не является конструктором как таковым (в смысле Java), меня мешает. –

Смежные вопросы