基本的設計如下
import random class Encrypt: def setCode(self): self.code = [chr(i) for i in range(97, 123)] random.shuffle(self.code) def getCode(self): return "".join(self.code) def toEncode(self): return "toEncode" def toDecode(self): return "toDecode" e = Encrypt() e.setCode() print() print(e.getCode()) print(e.toEncode()) print(e.toDecode()) print() # 《程式語言教學誌》的範例程式 # http://pydoing.blogspot.com/ # 檔名:encrypt.py # 功能:示範 Python 程式 # 作者:張凱慶 # 時間:西元 2012 年 12 月
我們定義四個方法 (method) ,第一個方法 setCode() 用來設定密碼表。留意此時 code 已變為實體屬性 (instance attribute) ,這樣才能用在 Encrypt 中的其他方法
def setCode(self): self.code = [chr(i) for i in range(97, 123)] random.shuffle(self.code)
第二個方法 getCode() 用來取得密碼表 self.code ,這可以讓我們在類別以外的地方取得密碼表。由於 self.code 為串列 (list) ,這裡使用字串的 join 方法將 self.code 合併成一個字串 (string)
def getCode(self): return "".join(self.code)
其餘兩個 toEncode() 與 toDecode() 是用來編碼與解碼的,這裡先寫出來
def toEncode(self): return "toEncode" def toDecode(self): return "toDecode"
底下我們寫了一小段測試目前 Encrypt 類別的程式
e = Encrypt() e.setCode() print() print(e.getCode()) print(e.toEncode()) print(e.toDecode()) print()
執行結果如下
雖然測試程式可以和類別定義都放在同一個檔案裡,可是這樣會有個問題,也就是在其他 Python 程式 import 進來的時候,這些沒有縮排的程式碼會先被執行,嗯,這樣就不太好了說,有個方式可以避免這種情況發生,也就是把測試的程式放在 if __name__ == '__main__': 的地方囉!
中英文術語對照 | |
---|---|
類別 | class |
方法 | method |
實體屬性 | instance attribute |
串列 | list |
字串 | string |
您可以繼續參考
軟體開發
相關目錄
回 Python 入門指南
回 Python 教材
回首頁
參考資料
http://docs.python.org/3.1/tutorial/classes.html
沒有留言:
張貼留言