#python #class #floating-point #subtraction
#python #класс #число с плавающей запятой #вычитание
Вопрос:
У меня есть следующий код, встроенный в класс.Всякий раз, когда я запускаю distToPoint, он выдает ошибку «неподдерживаемый тип (ы) операнда для -: ‘NoneType’ и ‘float» Я не знаю, почему он возвращается с NoneType и как мне заставить вычитание работать?
Предполагается, что self и p должны быть парами.
def __init__(self, x, y):
self.x = float(x)
self.y = float(y)
def distToPoint(self,p):
self.ax = self.x - p.x
self.ay = self.y - p.y
self.ac = math.sqrt(pow(self.ax,2) pow(self.ay,2))
Комментарии:
1. Ваш код (как указано) не выдает эту ошибку. Пожалуйста, отредактируйте свой код, чтобы привести простейший пример, который приводит к ошибке.
Ответ №1:
Для сравнения,
import math
class Point(object):
def __init__(self, x, y):
self.x = x 0.
self.y = y 0.
def distToPoint(self, p):
dx = self.x - p.x
dy = self.y - p.y
return math.sqrt(dx*dx dy*dy)
a = Point(0, 0)
b = Point(3, 4)
print a.distToPoint(b)
ВОЗВРАТ
5.0
Ответ №2:
Вы должны проверить, какое значение p
вы отправляете функции, чтобы у нее были x
и y
, которые являются числами с плавающей точкой.
Старый пост (если подумать, я не думаю, что вы пытались использовать distToPoint
таким образом):
distToPoint
не возвращает значение, вероятно, в этом проблема.