我在我编写的一个类中有一个函数,它读取磁力计上的读数并将其转换为0到359度之间的方向。功能如下:
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)
当我尝试用print obj.heading()
调用函数时,python shell给出了错误“TypeError:'float'对象不可调用”。我有一些编码方面的经验,但在python中并不多。有谁知道这里发生了什么?
答案 0 :(得分:1)
因为您在此行的普通实例变量中覆盖了heading
方法
self.heading = round((math.atan2(self.y, self.x) * 180) / pi
不要使用self
来编写本地变量,因为使用self
您将引用一个实例变量,请尝试使用此代码:
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 :(得分:1)
print obj.heading()
需要:
print obj.heading
取下支架。无论如何我看到这个是因为我在使用对象做自己的项目时遇到了同样的问题。 (当然我正在使用python 3)
希望这有帮助!