kostenloser Webspace werbefrei: lima-city


Python Callback - Nutzerfunktion aufrufen

lima-cityForumProgrammiersprachenPython

  1. Autor dieses Themas

    hc-tools

    Kostenloser Webspace von hc-tools

    hc-tools hat kostenlosen Webspace.

    Hallo zusammen,

    ich habe eine kleine Python Klasse geschrieben, die es ermöglicht mithilfe des FritzBox! Anrufmonitors einkommende und ausgehende Anrufe anzuzeigen. Das ganze geschieht über eine TCP Verbindung und kann z.B. benutzt werden, um bei einer Heimautomatisierungslösung bei einem eingehenden Anruf spielende Musik automatisch anzuhalten.

    Der Code ist hier zu finden: https://github.com/HcDevel/py-fritz-monitor/blob/master/call-monitor.py

    Jetzt verfügt die Klasse aber auch über einen Callback, der sobald über die TCP Verbindung eine neue Nachricht (z.B. bei einem Anruf) automatisch eine durch den Nutzer definierte Funktion aufruft. Ein Beispiel ist hier zu finden: https://github.com/HcDevel/py-fritz-monitor/blob/master/example.py#L23

    Das Problem ist jetzt, dass der Callback aufruf (https://github.com/HcDevel/py-fritz-monitor/blob/master/call-monitor.py#L35) nur an eine Funktion erfolgen kann. Jedoch ist es nicht möglich eine Unterfunktion einer initialisierten Klasse aufzurufen. Weiß da jemand wie das geht? Mir fehlt da jeglicher Ansatz. Das ganze sollte natürlich universal sein. Das heißt sowohl reine Funktionen als auch Klassen unterstützen.

    Beitrag zuletzt geändert: 13.3.2014 19:47:28 von hc-tools
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Bin mir nicht sicher ob ich dich richtig verstehe, aber eigentlich ist das nicht weiter schwer, wenn man weiß wie:
    >>> class Foo:
    	def __init__(self):
    		self.callback = None
    		
    	def callback(self):
    		self.callback()
    
    		
    >>> class Bar:
    	def eineFunktion(self):
    		print("Hallo Welt")
    
    		
    >>> meinFoo = Foo()
    >>> meinBar = Bar()
    >>> meinFoo.callback = meinBar.eineFunktion # wichtig keine () dadurch wird die Funktion nicht ausgeführt, sondern als zeiger übergeben
    >>> meinFoo.callback()
    Hallo Welt

    Ich hoffe ich habe dich richtig verstanden und ich konnte dir helfen.
    P.S. schönes Projekt, gefällt mir
  4. Autor dieses Themas

    hc-tools

    Kostenloser Webspace von hc-tools

    hc-tools hat kostenlosen Webspace.

    Genau das ist es. Danke für die Antwort. Ich werde das dann mal im Code ändern.

    Edit: Code ist geändert. Das kann ich auch gut für mein aktuelles Projekt (Siri API) gebrauchen.

    Beitrag zuletzt geändert: 11.5.2014 17:57:12 von hc-tools
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!