0

Python プログラムで PyRo を使用しています。そして、私には問題があります。クラス B: callFromProxy では 0 を出力しますが、callfun では正しい値 = 10 を出力します。なぜですか? 直し方?

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
4

1 に答える 1

1

私は、PyRoが少なくともデフォルトで非同期呼び出しを使用していると信じています(そして私が間違っている場合は訂正してください)。

したがって、を呼び出すとcallFromProxy、とを呼び出すのに時間がかかるため、の前にprintvalue実行される可能性があります。これが発生した場合、初めて呼び出されたときは0のままです。callfunitemBA.callfunB.callfunelements["name"]printvalue

于 2010-02-14T14:40:59.503 に答える