Search code examples
pythonclasspoint

Class point - Python


The questions asks to "Write a method add_point that adds the position of the Point object given as an argument to the position of self". So far my code is this:

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

However, I got this error message:

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)
?       ^  ^

So I'm wondering what is the problem with my code?


Solution

  • Your solution returns a new tuple without modifying the attributes of the current object at all.

    Instead, you need to actually change the object's attributes as per the instructions and don't need to return anything (ie, this is an "in-place" operation).

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