我在我的python程序中使用PyRo。我有一個問題。 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
我修復了一些我認爲是代碼中的拼寫錯誤的行。 – 2010-02-14 14:30:51
我剛剛使用最新的Pyro版本測試了上述代碼,它的工作原理與我預期的完全相同 - 它打印10次兩次。如果我理解你的帖子,這就是你想要的。 – 2010-02-14 16:02:48
嗨。我完全不確定你在這裏做什麼,但是如果我理解你是正確的 - 你將itemA設置爲代理對象,並且itemB保持原樣,即它是B類的正常實例嗎? 如果是這樣,那麼在你的代碼中會發生什麼,基本上是你製作一個對象itemB的引用副本,將它發送到服務器,在服務器上修改它,然後打印出另一個對象的狀態在客戶端創建,並沒有改變。 – Timur 2011-07-21 19:17:37