第7 9節 案例詳解 Python類封裝

2021-10-01 01:28:50 字數 1234 閱讀 6260

上節介紹了python中類的封裝機制,本節結合乙個具體例子進行詳細說明。

我們定義乙個person類,其內部有姓名、年齡和型別三個例項變數,並定義了相關的訪問方法:

class person():

def __type(self):

if self._age<16: return '青少年'

elif self._age<60: return '中年'

else:return '老年'

def __init__(self,name):self.name,_age,__persontype=name,0,'未知'

def get_name(self,name):return self.name

def set_age(self,age):

self._age=age

self.__persontype=self.__type()

def get_age(self,age):return self._age

def get_type(self):return self.__persontype

注意,其中例項變數_age年齡用的是乙個下劃線開頭,例項變數__persontype型別是雙下劃線開頭。定義完成後,我們執行如下**定義兩個人的例項,並設定年齡:

p1=person('張三')

p2=person('李莎')

p1.set_age(36)

p2.set_age(12)

同時沿用前面章節定義的函式dirp以去掉屬性中的雙下劃線開頭的變數和方法:

def dirp(iter): return [i for i in dir(iter) if not i.startswith('__')]

執行:dirp(p1)

輸出結果:['_person__persontype', '_person__type', '_age', 'get_age', 'get_name', 'get_type', 'name', 'set_age']

可以看到:__persontype屬性被變為了_person__persontype,__type方法被變為了_person__type,同時執行訪問原屬性的例項變數會報錯。具體執行截圖如下:

第8 2節 Python類的 init

前面 第8.1節 python類的構造方法 init 深入剖析 語法釋義 一節介紹了構造方法定義的語法,並進行了語法解釋說明,本節將通過案例來說明構造方法引數傳遞及返回值的情況。一 案例說明 本節定義乙個汽車類,它有四個例項變數 wheelcount,power,oilcostperkm,total...

第7 9節專案1 k次方之和

問題及 檔名稱 main.c 完成日期 2018年2月6日 版本號 v1.0 問題描述 k次方之和 輸入描述 底數1 n和指數k 程式輸出 輸出結果 includeint power int m,int n 求m的n次方 m n int sum of power int k,int n 從1 k到n...

C MemoryStream類案例詳解

memorystream位於system.io命名空間,為系統記憶體提供流式的讀寫操作。常作為其他流資料交換時的中間物件操作。memorystream 是乙個特例,memorystream中沒有任何非託管資源,所以它的dispose不呼叫也沒關係。託管資源.net會自動 memorystream繼承...