2016-04-30 4 views
0

私はGPSシステムのためにいくつかのクラスを作る必要がある学校プロジェクトがあります。私は関数dist(self、other)を考え出すことに問題があります:私のコードの一番下に示されています。プロジェクトの後半にある他の定義はそれに大きく依存していますが、私はこの時点で困っています。 DIST機能は、xYインスタンス変数によって定義された位置のマンハッタン距離(X1-X2)+(Y1-Y2)を算出し、タプルpython - 問題を計算するmanhatan distance、TypeError

class GPS_Location: 
    def __init__(self,x,y): 
     self.x=x 
     self.y=y 
    def __str__(self): 
     return '(%s,%s)' % (self.x,self.y) 
    def __repr__(self): 
     return 'GPS_Location(%s,%s)' % (self.x,self.y) 
    def __eq__(self,other): 
     self.other = other 
     if (self.x,self.y) == other: 
      return True 
     else: 
      return False 
    def dist(self,other): 
     self.other = other 
     return abs(self.x - (other[0])) + abs(self.y - (other[1])) #TypeError 
として示されている別の場所

コードをテストするとき、 "TypeError: 'GPS_Location'オブジェクトが反復可能ではありません。私はたくさんの微調整を試みましたが、私は何が間違っているのか分かりません。

ご協力いただければ幸いです!

+0

あなたのコードを画像へのリンクではなく、コードフォーマットのテキストとして追加してください。 – TigerhawkT3

+0

エラーを生成するコードも追加する必要があります。 'Location'オブジェクトとは何ですか? – Francesco

+0

サイドノート: 'self'.other = other'を' dist'と '__eq__'の両方に書かないのはなぜですか?(あなたは' other'引数で両方の関数を呼び出し、あなたのコードで 'other'を使います。それとも別の場所で使うのですか? – quapka

答えて

0
  1. そのライン8は方法の残りの部分のような4つのスペースでインデントされていることを確認。
  2. otherself.other__eq__()dist()に割り当てる理由はありません。あなたはこれらのメソッドを呼び出す方法に関連している可能性があるかもしれないだけで、他の問題は、(あなたは、引数otherがちょうどタプルであることを述べた)
  3. 、これは動作します:

    x = GPS_Location(1, 1) 
    x == (1, 1) 
    # True 
    x == (2, 2) 
    # False 
    x.dist((1, 1)) 
    # 0 
    x.dist((2, 2)) 
    # 2 
    

あなたの場合実際にdistからother引数として二GPS_Locationを渡す必要があり、それは次のように更新する必要があります:

def dist(self, other): 
    return abs(self.x - other.x) + abs(self.y - other.y) 

コールそれはそうです:

x = GPS_Location(1, 1) 
y = GPS_Location(2, 2) 
x.dist(y) 
# 2