J'ai besoin de créer un objet dbus en python avec les noms de méthodes qui sont décidés lors de l'exécution.Ajout de méthodes à un objet dbus en python
Le code que j'ai essayé est essentiellement ceci:
import dbus
import dbus.service
from dbus.mainloop.glib import DBusGMainLoop
import gobject
DBusGMainLoop(set_as_default=True)
gobject.threads_init()
class greg(dbus.service.Object):
def __init__(self):
dbus.service.Object.__init__(self, bus, "/greg")
@dbus.service.method(
dbus_interface="com.blah.blah",
in_signature="",
out_signature="")
def dance(self):
print "*busts a move*"
def func(self):
pass
func = dbus.service.method(
dbus_interface="com.blah.blah",
in_signature="",
out_signature="")(func)
setattr(greg, "do_nothing", func)
bus = dbus.SystemBus()
busname = dbus.service.BusName("com.blah.blah", bus)
obj = greg()
loop = gobject.MainLoop()
loop.run()
Dans ce cas, la fonction « danse » est disponible sur l'interface, mais la fonction « do_nothing » est pas. Je ne comprends pas pourquoi? Y a-t-il un moyen de faire ce que j'essaie d'accomplir?