我現在使用iPython來交互式地設置一個Twisted網絡。我在IPython中運行該腳本描述最好的是我必須做的:未綁定的python方法,潛在的作用域問題
import router, pdb
# creates nodes which encapsulate RandomVector and VectorAdder objects
a = router.LocalNode(router.RandomVector, '/topic/a_c')
b = router.LocalNode(router.RandomVector, '/topic/b_c')
c = router.LocalNode(router.VectorAdder)
c.registerAsListener('/topic/a_c')
c.registerAsListener('/topic/b_c')
def conn():
global a
global b
a.onConnect()
b.onConnect()
router.r.loadOnConnect(conn)
router.STOMPconnect(router.r)
router.reactor.run()
發生了什麼事是,康涅狄格州()被傳遞到扭曲的協議,它運行康恩()每次連接丟失。
的onConnect看起來是這樣的:
def onConnect(self):
self._lc = LoopingCall(self.advance)
self._lc.start(1)
每當爲onConnect獲取運行,我得到的錯誤:
類型錯誤:「未綁定方法的onConnect()必須與RandomVector實例作爲第一個參數來調用(啥都沒相反)'
有誰知道爲什麼會發生這種情況?
由於您沒有分配給全局變量,所以'conn()'中不需要全局聲明。 – 2010-03-05 17:17:19