Python 入門指南 - Encrypt 類別

Encrypt 類別 (class) 是我們編密碼軟體的核心,我們將之放在 encrypt.py 檔案中




基本的設計如下
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

沒有留言: