Передача объекта через Pyro - PullRequest
4 голосов
/ 28 января 2009

Я использую 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

Способ получения в распределенном объекте:

def apply(self, collection):
    print "Todo: Apply collection"
    #op = collection.getop()
    print "Number of collected operations:", collection.a
    collection.printop()

Ответы [ 2 ]

4 голосов
/ 28 января 2009

Операции - это атрибут класса, а не атрибут объекта. Вот почему это не передается. Попробуйте установить его в __init__ через self.operations = <whatever>.

1 голос
/ 28 января 2009

Ваш метод получения, apply , имеет то же имя, что и встроенная функция Python.

...