Вопрос о новинке Python: метод обратного вызова handlePackets
никогда не вызывается, если это метод класса. Если он не в классе, он работает нормально. Что я могу сделать?Callback не вызывается, если это метод класса
class Receiver:
def __enter__(self):
self.serial_port = serial.Serial('/dev/ttyUSB0', 115200)
self.xbee = ZigBee(self.serial_port, escaped=True, callback=self.handlePackets)
Logger.info('Receiver: enter')
return self
def __exit__(self ,type, value, traceback):
Logger.info('Receiver: exit')
self.serial_port.close()
def handlePackets(data):
Logger.info('Receiver: packet incoming')
Вы пытаетесь использовать его в качестве менеджера контекста? Тогда это должны быть '__enter__' и' __exit__'. В противном случае, какой код вызывает 'enter'? – tdelaney
Они есть. Исправлено в сообщении. – wackazong
Я думаю, что это возможно, что есть проблемы со старыми классами. В python 2.7 объявите класс 'Receiver (object) класса:'. – tdelaney