在py文件中有以下类定义:
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的方法,您可以为我建议这种情况吗?
提前谢谢。
发布于 2016-05-01 12:37:03
我刚找到了解决办法。如果将序列化程序将Pyro4.config.SERIALIZER全局变量设置为"dill",则函数回调也将被处理。
https://stackoverflow.com/questions/36956344
复制相似问题