1

次のコードがクラスに埋め込まれています。distToPoint を実行するたびに、「-: 'NoneType' および 'float'' のサポートされていないオペランド タイプ: '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)) 
4

2 に答える 2

1

p関数に送信する の値を確認して、xyが float になるようにする必要があります。

古い投稿 (よく考えてみると、この方法を使用しようとしていたとは思いませんdistToPoint):

distToPoint値を返さない、これがおそらく問題です。

于 2011-04-11T00:45:29.273 に答える
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
于 2011-04-11T00:56:11.590 に答える