I have a code that calculates Euclidean distance for me:
class Point:
\"\"\"A point in two-dimensional space.\"\"\"
def __init__(self, x, y):
se
Note that your definition of __pow__
is a bit nonstandard for vectors.
But as it is, the distance of two points p1
and p2
could be written as sum((p1 - p2)**2)**.5
. So we need your __pow__
method, your __sub__
method, and the only other addition is an __iter__
method which allows sum
to work:
class Point:
"""A point in two-dimensional space."""
def __init__(self, x, y):
self._x = x
self._y = y
def __eq__(self, other):
return self._x == other._x and self._y == other._y
def __sub__(self, other):
return Point(self._x - other._x, self._y - other._y)
def __pow__(self, power):
return Point(self._x**power, self._y**power)
def __iter__(self):
yield self._x
yield self._y
def distance(self, other):
return sum((self - other)**2)**.5
p1 = Point(2, 3)
p2 = Point(5, -1)
print(p1.distance(p2))
Out: 5.0
That's the shortest way based on your existing code anyway. You could experiment further by adding a scalar multiplication method and an addition method and then defining sub as p1 + (-1)*p2
. You can also make things a bit easier on yourself by implementing a __repr__
method.