[Python-de] Re: paho-mqtt und vorgegebene Callback-Funktione n in einer Klasse.

Hartmut Goebel <[email protected]> Sun, 11 Jun 2023 20:52:56 +0200
Newsgroups gmane.comp.python.general.german
Organization Goebel Consult
Message-ID <[email protected]>
Hallo,

ich kenne die Diskussion von vor einem halbe Jahr nicht, aber mir fällt 
folgendes auf:

Am 11.06.23 um 19:12 schrieb Marc Haber:
> |    def on_connect(self, client, userdata, flags, rcode):
> |        client.subscribe('tele/wama/SENSOR')
> [_]
> |        client = mqtt.Client()
> |        client.on_connect = on_connect

Diese Zeile muss lauten:

         client.on_connect =*self.*on_connect

Es wundert mich, dass Dein Code überhaupt funktioniert, denn 
"on_connect" ist nicht definiert. Oder hast Du das nur zu viel gekürzt?!

> Leider haben die beiden Callbackfunktionen von paho eine vorgegebene
> Signatur und können deswegen keine Methoden des ApplianceMonitor sein.

Hmm, Ich habe eben folgendes probiert, und das klappt (X.on_connect wird 
wie erwartet mit der Instanz von ApplianceMonitor als ersten Argument 
und den anderen vier danach aufgerufen):

class Client:
     def doit(self):
         self.on_connect(self, 2, 3, 4)

class ApplianceMonitor:
     def on_connect(self, client, userdata, flags, rcode):
         print(self, client, userdata, flags, rcode)

     def main(self):
         c = Client()
         c.on_connect = self.on_connect
         c.doit()

ApplianceMonitor().main()

Andernfalls verstehe ich nicht, was Deine Frage ist.


-- 
Schönen Gruß
Hartmut Goebel
Dipl.-Informatiker (univ), CISSP, CSSLP, ISO 27001 Lead Implementer
Information Security Management, Security Governance, Secure Software 
Development

Goebel Consult, Landshut
http://www.goebel-consult.de

Blog: 
https://www.goebel-consult.de/blog/2021/debugging-python-_frozen_importlib/
Kolumne: 
https://www.goebel-consult.de/blog/cissp-gefluester/2012-04-compliance-bringt-keine-sicherheit/ 

_______________________________________________
python-de Mailingliste -- [email protected]
Zur Abmeldung von dieser Mailingliste senden Sie eine Nachricht an [email protected]
https://mail.python.org/mailman3/lists/python-de.python.org/
Mitgliedsadresse: [email protected]