技術討論區 > Python程式設計討論區

請教物件間通訊

(1/1)

redjack:
大家好,下面是小弟在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 的確有建立起來了。

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

victorlin:
函數裡建立的變數在離開那個函數後就看不見了
像這樣


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

--- 程式碼結尾 ---

我猜你的dataServer可能像這樣

--- 代碼: ---def __init__(self):
    dataServer = DataServer()

--- 程式碼結尾 ---

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

導覽

[0] 文章列表

前往完整版本