2016-07-09 44 views
-2

我有一个类,我写了一个读取磁力仪上的读数,并将其转换为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中并不多。有人知道这里发生了什么吗?

回答

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
print obj.heading() 

需求是:

print obj.heading 

取下支架。无论如何,我看到了这一点,因为我在使用对象做自己的项目时遇到了同样的问题。 (当然我使用Python 3)

希望这有助于!

相关问题