Я использую PyRo в моей программе python. И у меня проблема. класс B: В callFromProxy напечатайте 0, но в callfun напечатайте правое значение = 10. Почему? Как исправить?PyRo и python
class A(Pyro.core.ObjBase):
# set link to item class B
def set(self, real_B):
self.item_B = real_B
# call function callfun in item_B
def callfun(self):
self.item_B.callfun(10)
class B(Pyro.core.ObjBase):
# init class B
def __init__(self):
self.elements = {"name":0}
# set proxy to item class A
def set(self, proxyA):
self.proxyA = proxyA
# print
def printvalue(self):
print self.elements["name"]
# call from proxy
def callFromProxy(self):
self.proxyA.callfun()
self.printvalue() # this is not print 10, print 0
# call function
def callfun(self, value):
self.elements["name"] = value
self.printvalue() # but this is print 10
itemA = A()
# proxyA connect from PyRo to itemA
itemB = B()
itemB.set(itemA)
itemA.set(itemB)
itemB.callFromProxy() # this is not print 10
Я исправил несколько строк, которые, как я предполагал, были опечатками в вашем коде. –
Я только что проверил код выше, используя последнюю версию Pyro, и он работает точно так, как я ожидал, - он печатает 10 дважды. Если я понимаю ваш пост, это то, что вы хотите. –
Привет. Я совершенно не уверен, что вы пытались сделать здесь, но если я понимаю вас правильно - вы устанавливаете itemA в прокси-объект, а itemB остается нетронутым, т. Е. Это обычный экземпляр класса B? Если это так, то, что происходит в вашем коде, заключается в том, что в основном вы делаете копию ссылки на объект itemB, отправляете его на сервер, изменяете его на сервере и затем распечатываете состояние другого объекта, который изначально был созданный на стороне клиента, и который не изменяется. – Timur