J'utilise PyRo dans mon programme python. Et j'ai un problème. classe B: Dans callFromProxy, imprime 0, mais callfun imprime la valeur correcte = 10. Pourquoi? Comment réparer?PyRo et 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
J'ai corrigé quelques lignes que je supposais être des fautes de frappe dans votre code. –
Je viens de tester le code ci-dessus en utilisant la dernière version de Pyro et cela fonctionne exactement comme je l'avais prévu - il imprime 10 fois deux fois. Si je comprends votre message, ce que vous voulez. –
Salut. Je ne suis pas tout à fait sûr de ce que vous essayiez de faire ici, mais si je vous comprends bien, vous placez itemA dans un objet proxy, et itemB est laissé intact, c'est-à-dire une instance régulière de classe B? Si c'est le cas, alors ce qui se passe dans votre code, c'est que vous faites une copie d'un objet B, l'envoie au serveur, le modifie sur le serveur, puis imprime l'état d'un autre objet créé du côté client et qui n'est pas modifié. – Timur