面向對象的特征—封裝的意義和操作過程(四)

封裝:

面向對象的程序設計中,某個類把所需要的數據(也可以說是類的屬性)和對數據的操作(也可以說是類的行為)全部都封裝在類中,分別稱為類的成員變量和方法(或成員函數)。這種把成員變量和成員函數封裝在一起的編程特性稱為封裝。

類的屬性

類由屬性和方法組成,類的屬性是對數據的封裝,而類的方法是對類的行為的封裝。類的屬性按使用范圍分為共有屬性和私有屬性。具體地,在python實現面向對象的編程思想的時候,封裝在類中的屬性可以分為兩種數據類的屬性和數據對象的屬性(也可以成為數據類的成員變量和屬于對象的成員變量),其中,這兩種成員變量又各自分為共有成員變量和私有成員變量。

類的成員變量和對象的成員變量

類的成員變量定義在類中,和類的成員函數在同一縮進等級。而對象的成員變量定義在init(self)成員函數中,和init(self)函數下的變量和語句在同一等級。通俗地講,類的成員變量屬于類,共類的所有對象和類本身所共有,也就是說所有的類的對象和類只有一份這樣的變量。而對象的成員變量屬于類的對象本身,每個對象都有一份,而且各個對象之間互不影響。

公有成員變量和私有成員變量

python中用成員變量的名字來區分是共有成員變量或者是私有成員變量。python中,以兩個下劃線‘__’開頭的變量都是私有成員變量,而其余的變量都屬于公有成員變量。其中,私有的成員變量只能在類的內部訪問,而共有的公有的成員變量可以在類的外部進行訪問。

方法重載:

在一個類型中,出現了相同名稱,不同參數的函數/方法,稱為方法重載

目的:在執行的過程中,通過參數的不同,來執行不同的代碼,實現不同的功能。python中,已經實現了,【可變參數、關鍵字參數】--【我不需要方法重載了!】python又針對屬性訪問函數,進行了相同名稱函數的定義 —— 偽方法重載

偽方法重載的目的:配合封裝,隱藏數據訪問方法的底層實現!

公有方法和私有方法

如上面所說,類的方法是對類行為的封裝。類的方法也分為公有方法和私有方法。類的私有方法只能通過對象名(在類內部也就是self)在類的內部進行訪問,而公有方法可以在類的外部通過對象名進行訪問。和屬性不同的是,一般意義上的類方法屬于對象,也就是說只有通過對象才可以進行調用,不能直接通過類名進行調用。一般類方法的第一個參數必須是代指類對象本身的(一般我們常用self,實際上可以是任何自定義的名字,只不過self是大家約定俗成的用法,在下面介紹的類方法中,大家一般用cls,因為那里更多地標識的是一個類),可以通過self訪問類對象的成員函數和數據。

同樣,公有的成員函數和私有的成員函數也是通過名字來區分的,雙下劃線‘__’開頭的函數是私有成員函數。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容