2

每当我尝试传递具有第二个对象(bClass)的属性的对象(aClass)时,我得到:

Unpersistable('Unpersistable 数据:类 amodule.bClass 的实例被认为不安全')

aClass 是可复制的且不可复制的,而 bClass 则不是。

这是我的代码:

服务器.py:

from twisted.application import internet, service
from twisted.spread import pb
from amodule import PBServer

application = service.Application("Test app")

# Prepare managers
clientManager = internet.TCPServer(8282, pb.PBServerFactory(PBServer()));
clientManager.setServiceParent(application)

if __name__ == '__main__':
    print "Run with twistd"
    import sys
    sys.exit(1)

一个模块.py:

from twisted.spread import pb

class bClass:
    """This is not a Copyable class
    """

class aClass(pb.RemoteCopy, pb.Copyable):
    b = bClass()
pb.setUnjellyableForClass(aClass, aClass)

class PBServer(pb.Root):
    def remote_echo(self, a):
        return a.b

无论如何要解开 aClass 和它可以包含的所有对象吗?因为解冻包含的对象令人头疼,并且可能变成脏代码......

4

1 回答 1

2

使用应该使用setUnjellyableForClass

setUnjellyableForClass(bClass, bClass) 

并让 bClass 从 Copyable 继承。

看看传递复杂类型

于 2012-05-31T16:05:31.877 回答