我在一个项目中使用Pyro,似乎无法理解如何通过线路传输完整的对象.对象不是分布式的(我的分布式对象工作得很好),但应该作为已经可用的分布式对象的参数.
我的对象是从包含一些方法和一些变量的自定义类派生而来的 – 整数和列表.该类可用于服务器和客户端.当我使用我的对象作为分布式对象的方法的参数时,整数变量被正确地“接收”,但是列表是空的,即使我可以看到它包含在“发送”之前的值.
为什么是这样?
该课程的简短版本:
class Collection(Pyro.core.ObjBase):
num = 0
operations = [("Operation:", "Value:", "Description", "Timestamp")]
def __init__(self):
Pyro.core.ObjBase.__init__(self)
def add(self, val, desc):
entry = ("Add", val, desc, strftime("%Y-%m-%d %H:%M:%S"))
self.operations.append(entry)
self.num = self.num + 1
def printop(self):
print "This collection will execute the following operations:"
for item in self.operations:
print item
分布式对象中的receving方法:
def apply(self, collection):
print "Todo: Apply collection"
#op = collection.getop()
print "Number of collected operations:", collection.a
collection.printop()
解决方法:
操作是类属性,而不是对象属性.这就是它没有转移的原因.尝试通过self.operations =< whatever>在__init__中设置它.