带回调的 Pyro4
Pyro4 with callbacks
我在 py 文件中有以下 class 定义:
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())
如果你运行这个代码你可以看到它是运行ning。现在我正在尝试 运行 与 Pyro4 相同的代码。当我这样做时,我总是 运行 进入以下错误消息:
Pyro4.errors.SerializeError: unsupported serialized class: builtins.function
对于以下行:
q.bind_to_apple(print_on_change)
我的问题是:
这甚至可以用 Pyro4 还是序列化程序的限制?如果我尝试使用 pickle 而不是 serpent,可以解决这个问题吗?
如果没有,对于这种情况,您可以为我推荐 Pyro4 的替代品吗?
提前致谢。
我刚刚找到了解决方案。如果将 Pyro4.config.SERIALIZER 全局变量设置为 "dill" 的序列化程序更改为 "dill",那么函数回调也将被处理。
我在 py 文件中有以下 class 定义:
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())
如果你运行这个代码你可以看到它是运行ning。现在我正在尝试 运行 与 Pyro4 相同的代码。当我这样做时,我总是 运行 进入以下错误消息:
Pyro4.errors.SerializeError: unsupported serialized class: builtins.function
对于以下行:
q.bind_to_apple(print_on_change)
我的问题是: 这甚至可以用 Pyro4 还是序列化程序的限制?如果我尝试使用 pickle 而不是 serpent,可以解决这个问题吗?
如果没有,对于这种情况,您可以为我推荐 Pyro4 的替代品吗?
提前致谢。
我刚刚找到了解决方案。如果将 Pyro4.config.SERIALIZER 全局变量设置为 "dill" 的序列化程序更改为 "dill",那么函数回调也将被处理。