Übergeben zusätzlicher Argumente an das Python-Rückrufobjekt (win32com.client.dispatchWithEvents)

Ich habe Probleme mit Rückrufobjekten, ich bin ein Neuling, bitte seien Sie nett:

Ich benutze das win32com-Paket, um mit einer Windows-Anwendung zu interagieren (Die Anwendung ist nicht wichtig).

Kurz gesagt, ich versuche, ein Abonnement für eine Tabelle zu erhalten, die aktualisiert wird.

Ich habe erfolgreich einen Rückruf implementiert, der die zurückgegebenen Daten bei einer Aktualisierung der Tabelle empfängt. Jetzt muss ich jedoch auf die empfangenen Daten reagieren.

Dieses Problem wäre sehr einfach zu lösen, wenn ich das Callback-Objekt mit zusätzlichen Argumenten instanziieren könnte (siehe Code unten).

CallBack-Klasse:
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")
Instanziieren Sie das Callback-Objekt:
# 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)

BEARBEITEN

Instanziieren Sie die Callback-Objekte:
# 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>)

Wenn die Abonnementinformationen auf das Rückrufobjekt treffen, habe ich keine Ahnung, welches COM-Objekt das Abonnement eingerichtet hat (ich könnte anhand der zurückgegebenen Informationen raten, aber dies wird Probleme verursachen, wenn identische Abonnements eingerichtet werden).

Antworten auf die Frage(2)

Ihre Antwort auf die Frage