Как реализовать класс Point?

Реализуйте класс Point (точка). У этого класса должны быть

  • конструктор, принимающий два числа x и y, координаты точки на плоскости;
  • атрибуты x и y через которые можно будет получить координаты точки;
  • метод dist, который принимает еще один объект класса Point и находит эвклидово расстояние между двумя точками.

Импортировать ничего нельзя.

class Point(object):
    pass


    def __init__(self, x, y):
        self.x = x
        self.y = y
        
        
    p1 = Point()
    p2 = Point()
    x = input()
    y = input()

    def dist(self):
        dist = ((p1.x - p2.x) ^ 2 + (p1.y - p2.y) ^ 2) ** 0.5
        return p1.dist(p2)

Понимаю, что ошибка точно есть в использовании атрибутов, но как исправить не могу сообразить.


Ответы (2 шт):

Автор решения: gil9red

Отдельным местами у вас правильное направление мысли, но возникли проблемы с тем как всё собрать в одно.

Немного поколдовал над кодом, попробуйте:

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

    def dist(self, other):
        return ((self.x - other.x) ** 2 + (self.y - other.y) ** 2) ** 0.5


p1_x = int(input("p1.x: "))
p1_y = int(input("p1.y: "))

p2_x = int(input("p2.x: "))
p2_y = int(input("p2.y: "))

p1 = Point(p1_x, p1_y)
p2 = Point(p2_x, p2_y)

print(p1.dist(p2))
→ Ссылка
Автор решения: Zhihar
class Point(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y
        
    def dist(self, point):
        distance = ((self.x - point.x)**2 + (self.y - point.y)**2)**0.5
        return distance

по хорошему еще бы проверить, что point - это Point и выбросить исключение, если это не так

→ Ссылка