Классная точка - Python - PullRequest
       7

Классная точка - Python

0 голосов
/ 17 апреля 2020

Вопросы задают вопрос «Напишите метод add_point, который добавляет позицию объекта Point, заданную в качестве аргумента, к позиции self». Пока мой код такой:

import math
epsilon = 1e-5

class Point(object):
    """A 2D point in the cartesian plane"""
    def __init__(self, x, y):
        """
        Construct a point object given the x and y coordinates

        Parameters:
            x (float): x coordinate in the 2D cartesian plane
            y (float): y coordinate in the 2D cartesian plane
        """
        self._x = x
        self._y = y

    def __repr__(self):
        return 'Point({}, {})'.format(self._x, self._y)

    def dist_to_point(self, other):
        changex = self._x - other._x
        changey = self._y - other._y
        return math.sqrt(changex**2 + changey**2)

    def is_near(self, other):
        changex = self._x - other._x
        changey = self._y - other._y
        distance =  math.sqrt(changex**2 + changey**2)
        if distance < epsilon:
            return True

    def add_point(self, other):
        new_x = self._x + other._x
        new_y = self._y + other._y
        new_point = new_x, new_y
        return new_point

Тем не менее, я получил это сообщение об ошибке:

Input: pt1 = Point(1, 2)
--------- Test 10 ---------
Expected Output: pt2 = Point(3, 4)
Test Result: 'Point(1, 2)' != 'Point(4, 6)'
- Point(1, 2)
?       ^  ^
+ Point(4, 6)
?       ^  ^

Так что мне интересно, в чем проблема с моим кодом?

1 Ответ

1 голос
/ 17 апреля 2020

Ваше решение возвращает новый кортеж без какого-либо изменения атрибутов текущего объекта.

Вместо этого вам фактически нужно изменить атрибуты объекта в соответствии с инструкциями и ничего не возвращать (ie, это операция "на месте".

def add_point(self, other):
    self._x += other._x
    self._y += other._y
...