Python вычитание поплавков - PullRequest
1 голос
/ 11 апреля 2011

У меня есть следующий код, встроенный в класс. Каждый раз, когда я запускаю distToPoint, он выдает ошибку «неподдерживаемые типы операндов для -:« NoneType »и« float ». как заставить вычитание работать?

И 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)) 

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

Для сравнения

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
1 голос
/ 11 апреля 2011

Вы должны проверить, какое значение p вы отправляете в функцию, чтобы у нее были x и y, которые являются плавающими.

Старый пост (если подумать, я не думаю, что вы пытались использовать distToPoint таким образом):

distToPoint не возвращает значение, возможно, это проблема.

...