Я борюсь с объектами обратного вызова, я новичок, пожалуйста, будьте любезны:
Я использую пакет win32com для взаимодействия с приложением Windows (приложение не важно).
Короче говоря, я пытаюсь добиться подписки на таблицу, которая обновляется.
Я успешно реализовал обратный вызов, который получает возвращенные данные при обновлении таблицы, но теперь мне нужно действовать в соответствии с полученными данными.
Эту проблему было бы очень легко решить, если бы я мог создать экземпляр объекта обратного вызова с дополнительными аргументами (см. код ниже). Но я не знаю, как это сделать.
Класс обратного вызова:
class callBackEvents(object):
""" Callback Object for win32com
"""
def OnNewData(self, XMLData):
logging.info("Subscription returned information")
print "HERE : {}".format(XMLData))
# Would like to use some argument to access logic
# For how to use the new data
def OnActionResult(self, job, msg):
return True
def OnServerDisconnect(self):
logging.debug("Server Disconnected")
def OnServerConnect(self):
logging.debug("Trader Connected To Server")
Создайте объект обратного вызова:
# Instantiate API com object
self.app = win32com.client.DispatchWithEvents("WindowsApplication" callBackEvents)
# I would like to give the callback object extra arguments e.g. callBackEvents(params)
ИЗМЕНИТЬ
Создайте объекты обратного вызова:
# Instatiate two com objects
self.com1 = win32com.client.DispatchWithEvents("WindowsApplication" callBackEvents)
self.com2 = win32com.client.DispatchWithEvents("WindowsApplication" callBackEvents)
# Create multiple subscriptions (Note these are asynchronous)
# Pushing the subscribed info is not a problem and done elsewhere
self.com1.Subscribe(<subscription info>)
self.com2.Subscribe(<subscription info>)
Теперь, когда информация о подписке попадает в объект обратного вызова, я понятия не имею, какой ком-объект установил подписку (я мог бы догадаться на основе возвращаемой информации, но это вызовет проблемы, когда настроены идентичные подписки)