Получение динамических значений аргументов в наследуемом классе - django

я использую paho mqtt

написал класс

 class initializer():
    def __init__(self):
        self.client = mqtt.Client(mqtt_server+str(int(time.time())))  
        self.client.username_pw_set(
            username=mqtt_username, password=mqtt_password)
        self.client.on_connect = self.on_connect
        self.client.on_subscribe = self.on_subscribe
        self.client.connect(broker, mqtt_port)
        self.client.loop_start()
    def on_connect(self, client, userdata, flags, rc):
        if rc == 0:
            #app_logger.info("Device Connection Established")
            print("Device Connection Established")
        else:
            #app_logger.info("Bad Connection")
            print("Bad Connection")
    def on_message(self, client, userdata, message):
        # app_logger.info(message.topic)
        print("message.topic", message.payload)

тогда я унаследовал этот класс от другого класса.

   class PublishData(initializer):

        def __init__(self):
            super(PublishData, self).__init__()
            self.client.on_message = self.on_message


        def on_message(self, client, userdata, message):
            print("message.payloa", message.payload)

        def begin(self, topic, data):
            self.client.on_message = self.on_message
            self.client.subscribe(
                "topic")
            self.client.publish(
                topic, str(data))
    publishData = PublishData()
    publishData.begin(topic, data)

iam получаю сообщение в функции on_message в классе инициализаторе. но не получаю это сообщение в наследуемом классе. как получить значение message.payload в классе publishdata

class Class():

  def method(self, ...):
    ...

def function(..., ...)

method - это метод объекта, function - это отдельная функция. Это разные вещи.

on_message метод mqtt клиента ожидает обратный вызов function, но не method.

Правильный код будет выглядеть так:

import paho.mqtt.client as mqtt

class init:

  def __init__(self):
  
    def _on_connect(client, userdata, flag, rc):
      print("on connect")

    self.client = mqtt.Client()

    self.client.on_connect = _on_connect


class Publish(init):

  def __init__(self):
    super().__init__()

    def _on_message(client, userdata, message):
      print("on message")

    self.client.on_message = _on_message

mqtt_obj = Publish()
mqtt_obj.client.on_connect(1,2,3,4)
mqtt_obj.client.on_message(1,2,3)

вывод:

on connect
on message
Вернуться на верх