作者 主題: 請教物件間通訊  (閱讀 4064 次)

0 會員 與 1 訪客 正在閱讀本文。

redjack

  • 活潑的大學生
  • ***
  • 文章數: 426
    • 檢視個人資料
請教物件間通訊
« 於: 2009-06-06 15:26 »
大家好,下面是小弟在python.tw 論譠上提問的一個case

我現在在寫一個程式,可以把密文處理後,輸出成一個file, 然後再把處理的結果加密後送回給資料來源

小弟現在是這樣做
做一個加解密的class:
class method():
def __init(self):
def encrypt(self):
pass
def decrypt(self):
pass


class redjack1(method):
def __init__(self):
def encrypt(self):  ##這邊才指定如何加密
def decrypt(self):  ##這邊才指定如何解密


讀取資料也是類似加解密的作法,先定義一個名為data 的class, 然後再定義一個cFile(data)來做讀取二進位檔的動作。
在cFile 的instance 一建立時就去讀取資料做為屬性data的值。


程式主體:
class aaa:
def __init__(self): ## 裡面創建二個instance dataServer = cFile(), encryptServer = redjack1()
def process(self): ##這邊會去進行self.getdata, self.getPlain…的動作
def getdata(self):  ## 這邊去獲dataServer.data 的值
def getPlain(self): ## 這邊把截取的值丟到encryptServer.decrypt()裡。


由於我把GUI都一併做進來,所以有一個gui.py 的檔案。
而在gui.py 裡先建立一個aaa 的instance, 然後再建立gui 的instance.
本來是想說,這樣做的話,以後有新的加/解密方法或是data source,我只要在創建instance時去做判斷就好了

但問題來了:當我執行aaa.process時,python 告訴我global name dataServer 沒有定義。但是
instance 的確有建立起來了。

這個是因為命名空間的關係嗎?
我現在卡在這邊不知道該怎麼解決,有那位大大能指點一下方向嗎? @@

Knowledge is Power

victorlin

  • 區域板主
  • 可愛的小學生
  • *****
  • 文章數: 3
    • 檢視個人資料
回覆: 請教物件間通訊
« 回覆 #1 於: 2009-06-12 15:14 »
函數裡建立的變數在離開那個函數後就看不見了
像這樣

代碼: [選擇]
def foo():
   var = 123
   # var 在離開foo後就看不見了 它的scope只在foo裡

我猜你的dataServer可能像這樣
代碼: [選擇]
def __init__(self):
    dataServer = DataServer()

它離開__init__就看不到了,理所當然會出問題,要麻你就把它指定給self當作物件的屬性,要麻就讓它便成global變數