Я новичок в объектно-ориентированном программировании. Я пытался создать класс, который может найти расстояние между двумя точками. Я передал точки как кортежи как координаты. Я написал этот код, но он показывает ошибку.
class Line:
def __init__(self,coor1,coor2):
self.coor1= coor1
self.coor2= coor2
def distance(self):
print(((self.coor1[0]-self.coor2[0])**2(self.coor1[1]-self.coor2[1])**2)**0.5)
def slope (self):
print((self.coor2[1]-self.coor1[1])/(self.coor2[0]-self.coor1[0]))
coordinate1 = (3,2)
coordinate2 = (8,10)
li = Line(coordinate1,coordinate2)
li.distance()
Я знаю, что это можно решить с помощью распаковки кортежей, но я хочу знать, почему мой код не работает?
В функции distance
вы написали 2(self.coor1[1]-self.coor2[1])
, которая просит python выполнить метод __call__
объекта (2) класса int. Вам просто нужно добавить еще один знак сложения/вычитания после 2.
В примере я предполагаю, что вы хотите добавить.
class Line:
def __init__(self,coor1,coor2):
self.coor1= coor1
self.coor2= coor2
def distance(self):
print(((self.coor1[0]-self.coor2[0])**2+(self.coor1[1]-self.coor2[1])**2)**0.5)
def slope (self):
print((self.coor2[1]-self.coor1[1])/(self.coor2[0]-self.coor1[0]))
coordinate1 = (3,2)
coordinate2 = (8,10)
li = Line(coordinate1,coordinate2)
li.distance()
Возможно, вы пропустили
+
в**2(self.coor1[1]
Так что будетprint(((self.coor1[0]-self.coor2[0])**2+(self.coor1[1]-self.coor2[1])**2)**0.5)