Из класса Point в класс Linestring - PullRequest
       30

Из класса Point в класс Linestring

0 голосов
/ 01 октября 2018

Я создал класс Point, который принимает координаты x, y в качестве аргументов.Также я хотел создать класс Linestring, который принимает столько аргументов, сколько хочет пользователь, и сохраняет их в виде точек.Пока что:

class Point(object):
  def __init__(self,x,y):
    self.x = x
    self.y = y

  def move(self,movex,movey):
    self.x += movex
    self.y += movey

class LineString(object):
  def __init__(self, *args):
    self.points = [Point(*p) for p in args]

Итак, теперь я сохранил в self.points список точек.Вопрос в том, как я могу использовать функцию перемещения точек в строке linestring.Я пробовал что-то подобное, но это не работает

def moveline(self,movex,movey):
    self.points.move(movex,movey)

1 Ответ

0 голосов
/ 01 октября 2018

Чтобы точно объяснить, что @MichaelButscher указал в комментариях, проблема с вашей функцией moveline заключается в том, что self.points представляет собой список из Point объектов, а не сам объект Point,Следовательно, нам нужно перебрать этот список и вызвать функцию move для каждого из этих Point объектов.Это можно сделать с помощью цикла for.Ваша обновленная функция moveline может выглядеть так:

def moveline(self,movex,movey):
    for point in self.points:
        point.move(movex,movey)
...