У меня есть следующее определение класса в файле ру:Pyro4 с обратными вызовами
class this_obj(object):
def __init__(self):
self._apple = 5.0
self.observ_apple = []
def setter(self, value):
if (self._apple != value):
self._apple = value
for callback in self.observ_apple:
callback(self._apple)
def getter(self):
return self._apple
# apply property
apple = property(getter, setter)
# binder functions
def bind_to_apple(self, callback):
self.observ_apple.append(callback)
И у меня есть этот основной код в другом файле:
import handler_obj
def print_on_change(value):
print("apple change!!! " + str(value))
if __name__ == "__main__":
q = handler_obj.this_obj()
q.bind_to_apple(print_on_change)
print(q.getter())
q.setter(30)
print(q.getter())
Если запустить этот код вы можете увидеть, что он работает. Теперь я пытаюсь запустить тот же код с Pyro4. Как я это делал, я всегда работать в следующее сообщение об ошибке:
Pyro4.errors.SerializeError: unsupported serialized class: builtins.function
в следующей строке:
q.bind_to_apple(print_on_change)
Мой вопрос будет: Это возможно даже с Pyro4 или это ограничение сериализатора? Можно ли это решить, если я попытаюсь использовать рассол вместо змеи?
Если нет, то есть альтернатива Pyro4, которую вы можете мне предложить для таких случаев?
Заранее спасибо.
Не редактируйте сам файл configuration.py, так как он является частью библиотеки! Используйте другой способ изменения элемента конфигурации (например, с помощью соответствующей переменной среды) –