首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带回调的Pyro4

带回调的Pyro4
EN

Stack Overflow用户
提问于 2016-04-30 14:50:42
回答 1查看 390关注 0票数 4

在py文件中有以下类定义:

代码语言:javascript
复制
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)

我在另一个文件中有这个主代码:

代码语言:javascript
复制
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运行相同的代码。在进行此操作时,始终会遇到以下错误消息:

代码语言:javascript
复制
Pyro4.errors.SerializeError: unsupported serialized class: builtins.function

关于以下一行:

代码语言:javascript
复制
q.bind_to_apple(print_on_change)

我的问题是:这在Pyro4中是可能的吗,还是对序列化程序的限制?如果我用泡菜代替蛇,这能解决吗?

如果不是这样的话,是否有一种替代Pyro4的方法,您可以为我建议这种情况吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-01 12:37:03

我刚找到了解决办法。如果将序列化程序将Pyro4.config.SERIALIZER全局变量设置为"dill",则函数回调也将被处理。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36956344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档