2016-07-09 7 views
-2

私は磁力計で読み取り値を読み取り、それを0〜359度の方向に変換する関数を作成しました。次のように関数である:「: 『フロート』オブジェクト呼び出すことはできません例外TypeError」私はprint obj.heading()で関数を呼び出すしようとすると'float'オブジェクトは呼び出し可能なエラーではありません

def heading(self): 
    self.xzy = self.__GetCompassMag() 
    self.x = self.xzy[0] 
    self.y = self.xzy[2] 
    pi = 3.14159 
    self.heading = round((math.atan2(self.y, self.x) * 180)/pi) 

    if self.heading < 0: 
     return int(360 + self.heading) 
    else: 
     return int(self.heading) 

、Pythonシェルは、私のエラーが与えます。私はコーディングでいくつかの経験がありますが、あまりPythonではありません。誰がここで何が起こっているのか知っていますか?

答えて

1

あなたはこの行で、プレーンインスタンス変数にあなたheadingメソッドをオーバーライドするので

self.heading = round((math.atan2(self.y, self.x) * 180)/pi 

selfでインスタンス変数を参照しますので、あなたのローカル変数を記述するためにselfを使用しないでください、このTODO試してみてください。

def heading(self): 
    self.xzy = self.__GetCompassMag() 
    self.x = self.xzy[0] 
    self.y = self.xzy[2] 
    pi = 3.14159 
    heading = round((math.atan2(self.y, self.x) * 180)/pi) 

    if heading < 0: 
     return int(360 + heading) 
    else: 
     return int(heading) 
1
print obj.heading() 

する必要があります:

print obj.heading 

ブラケットを外します。とにかく、オブジェクトを使って私自身のプロジェクトをやっているときに同じ問題が発生したので、これを見ました。 (もちろん、python 3を使って)

これは役に立ちます!

関連する問題