[Python]關于面向對象(封裝)

封裝:將一堆零碎的東西封箱裝起來!

1.什么是封裝?

封裝是指將現(xiàn)實世界中存在的某個客體的屬性與行為綁定在一起,并放置在一個邏輯單元內。該邏輯單元負責將所描述的屬性隱藏起來,外界對客體內部屬性的所有訪問只能通過提供的用戶接口實現(xiàn)。這樣做既可以實現(xiàn)對客體屬性的保護作用,又可以提高軟件系統(tǒng)的可維護性。只要用戶接口不改變,任何封裝體內部的改變都不會對軟件系統(tǒng)的其他部分造成影響。結構化設計方法沒有做到客體的整體封裝,只是封裝了各個功能模塊,而每個功能模塊可以隨意地對沒有保護能力客體屬性實施操作,并且由于描述屬性的數據與行為被分割開來,所以一旦某個客體屬性的表達方式發(fā)生了變化,或某個行為效果發(fā)生了改變,就有可能對整個系統(tǒng)產生影響。

2.如何實現(xiàn)封裝?

例如:

#?定義了一個商品類型,封裝和商品有關系的數據

class?Goods:

def?__init__(self,?name,?price,?stock):

self.name?=?name

self.price?=?price

self.stock?=?stock

#封裝具體的數據到對象中:對象是通過類型來封裝具體的數據的

g1?=?Goods(“連衣裙”,?199,?120)#?將對象敏感的數據,封裝在類的內部,不讓外界直接訪問;而是通過定義的set/get方法來間接訪問內部的數據的過程,此時,就可以在set/get方法中,添加條件限制代碼!

例如:

class Person:

? ? ? ? ?def__init__(self,?name,?age):

? ? ? ? ? ? ? ? ? self.__name?=?name

? ? ? ? ? ? ? ? ? self.__age?=?age

? ? ? ? ?def set_name(self,?name):

? ? ? ? ? ? ? ? ? self.__name?=?name

? ? ? ? ?def get_name(self):

? ? ? ? ? ? ? ? ? returnself.__name

? ? ? ? ?def set_age(self,?age):

? ? ? ? ? ? ? ? ? if age?>= 0 and age?<= 100:

? ? ? ? ? ? ? ? ? ? ? ? ? ? self.__age?=?age

? ? ? ? ? ? ? ? ? else:

? ? ? ? ? ? ? ? ? ? ? ? ? ? print("設置的年齡不合法...")

? ? ? ? def get_age(self):

? ? ? ? ? ? ? ? ? ?returnself.__age

? ? ? ? def__str__(self):

? ? ? ? ? ? ? ? ? ?return"姓名:%s;年齡:%s"%?(self.__name,self.__age)

3.封裝實現(xiàn)的步驟

1.完成一個類的定義

2.所有屬性私有化

3. 給每個屬性提供set/get方法

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容