1. 程式人生 > 實用技巧 >🍖類的封裝

🍖類的封裝

引入

先來舉個例子 :

當你摁下電腦開機鍵, 你不需要考慮主機板是怎麼通電的、 磁碟是怎麼轉動的、系統的資訊是怎麼載入的、裡面的一系列化學或者物理變化是怎麼樣的,你面對的就是一個開關鍵, 摁下它, 電腦就開起來了.

又比如:

一個玩具製造廠, 製作一個機器人, 我們需要去考慮機器人的每一個細節: 手臂、腿、頭、軀幹等等,製作簡單的玩具不要緊, 如果設計的玩具非常的複雜, 並且這工廠還有很多其他型別的玩具生產(小熊, 佩奇, 芭比公主,飛機模型等等)

上面我們使用面向過程的思想去設計, 在程式中就會讓我們的程式碼很長, 很雜亂

於是工廠聽取了小王的建議, 引進了一臺製造機器人玩具的機器, 我們只需要摁下機器的開關, 它就會自動製造機器人

這個時候我們不再去關注是先製造手還是腳還是軀幹這些細節, 我們面對的就只是一臺機器, 這機器就是一個物件

原理 : 以前我們需要關注製作玩具的每個步驟, 現在我們將步驟都封裝到一個機器裡面, 留給我們的只剩一個開關, 我們只需要摁開關就可以生產玩具了, 這就是面向物件的三大特性之一 : 封裝, 下面我們將詳細展開介紹

一.封裝

1.什麼封裝

  • 封裝是Python中面向物件的三大特性之一
  • 封裝就是隱藏物件的屬性和實現細節, 僅對外提供公共訪問方式

2.為什麼使用封裝

  • 提高安全性 : 避免使用者對類中屬性或方法進行不合理的操作
  • 隔離複雜度 : 就以上面的例子為例, 你只需要機器提供給你的開關, 內部結構不需要知道
  • 保證內部資料結構完整性 : 很好的避免了外部對內部資料的影響,提高了程式的可維護性
  • 提供程式碼的複用性

3.封裝的原則

  • 將不需要對外提供的功能都給隱藏起來
  • 把屬性都隱藏, 提供公共方法對其方法

二.隱藏

在python中用雙下劃線開頭的方式將屬性隱藏起來(設定成私有的)

  • 其實這僅僅這是一種變形操作且僅僅只在類定義階段發生變形
  • 類中所有雙下劃線開頭的名稱如__xxx都會在類定義時自動變形成:_[類名]__xxx的形式
class Eat:
    __breed = "五花肉"        # 變形 : "_Eat__breed"

    def __init__(self):     
        self.__meat = "大塊"  # 變形 : "_Eat__meat"

    def __eat(self):          # 變形 : "_Eat__eat"
        print(f"吃了{self.__meat}的{self.__breed}")

    def eat_meat(self):
        self.__eat()          # 只有在類的內部才可以通過"__eat"的形式訪問到

P1 = Eat()