2016-07-09 11 views
-2

У меня есть функция в классе, который я написал, который читает показания на магнитометре и преобразует его в направлении от 0 до 359 градусов. Функция выглядит следующим образом:Объект «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) 

Когда я пытаюсь вызвать функцию с print obj.heading(), питон оболочка дает свое сообщение об ошибке «TypeError:„Поплавок“объект не вызываемая». У меня есть некоторый опыт в кодировании, но не много в 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 

снять кронштейн. в любом случае я видел это, потому что я столкнулся с той же проблемой, выполняя свой собственный проект с использованием объекта. (курс im с использованием python 3)

надеюсь, что это поможет!

Смежные вопросы