2017-10-30 5 views
1

以下のコードPythonのエラー:バインドされていないメソッドの距離(最初の引数は、(代わりにclassobjインスタンスを得た)のような)ポイントインスタンスで呼び出されなければならない

class Point: 
    def __init__(self, x, y): 
     self.x = x 
     self.y = y 
    def distance(self,x1,y1,x2,y2): 
     d = math.sqrt(((x2 - x1) ** 2) + ((y2 - y1) ** 2)) 
     print ("Distance between the points is " + "%0.6f" % d) 
     return d 

def main(): 
    x = float(input("Enter x coordinate of first circle's centre: ")) 
    y = float(input("Enter y coordinate of the first circle's centre: ")) 
    r = float(input("Enter first circle's radius: ")) 
    pointx1 = x 
    pointy1 = y 
    first_circle = circle(x, y, r) 
    print(first_circle) 
    x = float(input("\nEnter x coordinate of second circle's centre: ")) 
    y = float(input("Enter y coordinate of the second circle's centre: ")) 
    r = float(input("Enter second circle's radius: ")) 
    pointx2 = x 
    pointy2 = y 
    second_circle = circle(x, y, r) 
    Point.distance(Point,pointx1, pointy1, pointx2, pointy2) 

を実行する上で、私は次のエラーを取得する:

File "C:/Users/Deepak/PycharmProjects/Submission/Shapes.py",line 102,in main 
Point.distance(Point,pointx1, pointy1, pointx2, pointy2) 
TypeError: unbound method distance() must be called with Point instance as 
first argument (got classobj instance instead) 

私は、ユーザーから2つの円の中心座標と半径を読み取ろうとしています。次に、それらの中心間の距離を調べようとしています。Point.distance()に4つのパラメーターだけを送信しようとしましたが、助けてください。このエラーを解決するにはどうすればよいですか?

答えて

1

私はあなたが私はあなたが間違って得たかもしれないと思う何を間違ってましたが、あなたはselfの引数を渡さない、あなただけのpointx1, pointy1, pointx2, pointy2を渡した場合、selfは内部を扱っているかわかりません。実際にあなたの距離関数は実際にクラス構造を利用していません。たとえば、次のように考えることができます:

from math import sqrt 

class Point(object): 
    def __init__(self,x,y): 
     self.x=x 
     self.y=y 


    @classmethod 
    def two_point_distance(cls, pnt1, pnt2): 
     return sqrt((pnt1.x - pnt2.x)**2 + (pnt1.y - pnt2.y)**2) 


    def distance_to(self, pnt2): 
     return sqrt((self.x - pnt2.x)**2 + (self.y - pnt2.y)**2) 


pntA=Point(3, 2) 
pntB=Point(7, 8) 

print Point.two_point_distance(pntA, pntB) 
print pntA.distance_to(pntB) 
関連する問題