一、主題說明:
前篇文章有說過類別的成員有屬性與方法,相對地要談到私有成員也一定會談到私有屬性與私有方法,類別成員如果沒有使用私有屬性及私有方法,那類別的外部就能直接存取類別內部屬性與方法的資料,所以若要掌握屬性與方法哪些是可以讓外部存取的、哪些是不能,就得用到私有屬性與方法囉。於程式中要怎麼表示私有屬性與私有方法,就在屬性與方法名稱前面加上兩個底線,如: _ _number 是私有方法、_ _getSummery() 是私有方法。
二、應用程式:
利用簡單的薪資人員管理系統小程式,來說明類別的私有屬性與私有方法。
class Employee:
def __init__(self,basic):
self.__basic = basic
self.__bonus = 0
self.__sum = 0
def __salery(self):
self.__sum = self.__basic + self.__bonus
def setSalery(self,bonus):
self.__bonus = bonus
def getSalery(self):
self.__salery()
return self.__sum
Andy = Employee(21000)
Andy.setSalery(6000)
print("Andy的薪水為= ",Andy.getSalery())
Mary = Employee(26000)
Mary.setSalery(4500)
print("Mary的薪資為= ",Mary.getSalery())
#執行結果
Andy的薪水為= 27000
Mary的薪資為= 30500
三、程式介紹:
程式一開始建立員工物件的同時設定核准的基本底薪,設定完成後基本底薪就不可以再變動,所以就宣告私有屬性 self.__basic,除了基本底薪外還有工作獎金,因員工個人工作狀況來設定發放,所以就使用了 setSalery() 的方法,它並沒有使用私有方法來限制外部變動限制,靈活展現了開放設定的功能,程式中針對薪資的計算方式為固定化無法讓外部修正,設計只讓類別內部程式使用而已,可以掌握薪資計算結構的隱密性,最後也不設私有方法而開放外部讀取計算結果薪資的總和的一般方法。
沒有留言:
張貼留言