Расстояние между двумя точками в 3D - классе, методах и объектах, TypeError - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь напечатать расстояние между двумя точками в 3D, используя класс и методы. Я получаю TypeError : distance() takes 1 positional argument but 2 were given.

Вот мой код, k2 и k3 - координаты двух точек.

import math
class Point:
def __init__(self, x, y, z):
  self.x = x
  self.y = y
  self.z = z
def __str__(self):
  return "point : ({:d}, {:d}, {:d})".format(self.x,self.y,self.z)
def distance(self):
  distance = sqrt( (x1-x2)**2 + (y1-y2)**2 + (z1 -z2)**2 )
  return distance
k2 = Point(5, 7, 8)
k3 = Point(-3, -2, 5)
print(k3.distance(k2))

также пытался

print(distance(k2, k3))

Я получаю NameError : name 'distance' is not defined

, пожалуйста, предложите, если я что-то упустил.

Спасибо! с использованием python 3.7.4 на Ma c Terminal

1 Ответ

0 голосов
/ 16 марта 2020

Где работает метод x1 / x2 ,... come from in the distance`? кажется, ваш код хочет вызвать их из воздуха ...

Кроме того, метод объявлен как def distance(self), поэтому он, очевидно, имеет только один аргумент (ссылка на сам объект), и не допускает передачи ему каких-либо дополнительных аргументов.

То, что вы действительно хотите, - это аргумент метода distance, в котором вы можете передать свой ссылочный объект для вычисления расстояния от. и вы должны использовать координаты самости объекта опорного объекта, и вычислить расстояние:

def distance(self, other):
   d = sqrt( (self.x - other.x)**2 + ...

Этот пример намеренно неполным, но вы должны получить идею. Вы, вероятно, действительно хотите прочитать о том, как выполнять объектно-ориентированное программирование в Python (и, вероятно, как делать объектно-ориентированное программирование в целом)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...