網頁

2025年7月13日 星期日

Python 私有屬性與私有方法

 一、主題說明:

前篇文章有說過類別的成員有屬性與方法,相對地要談到私有成員也一定會談到私有屬性與私有方法,類別成員如果沒有使用私有屬性及私有方法,那類別的外部就能直接存取類別內部屬性與方法的資料,所以若要掌握屬性與方法哪些是可以讓外部存取的、哪些是不能,就得用到私有屬性與方法囉。於程式中要怎麼表示私有屬性與私有方法,就在屬性與方法名稱前面加上兩個底線,如: _ _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() 的方法,它並沒有使用私有方法來限制外部變動限制,靈活展現了開放設定的功能,程式中針對薪資的計算方式為固定化無法讓外部修正,設計只讓類別內部程式使用而已,可以掌握薪資計算結構的隱密性,最後也不設私有方法而開放外部讀取計算結果薪資的總和的一般方法。


沒有留言:

張貼留言

TQC+ Python 證照考題評量(五十四) - 平均溫度

 一、主題介紹: 資料庫中的一堆數據資料,時常需要這些資料的平均值、最大值、與最小值,作為分析資料的依據,如能透過寫程式讓它們自動化就能增加效率,就來看看今天的 TQC+ 考題的練習。 (1) 題目 請撰寫一程式,讓使用者輸入四週各三天的溫度,接著計算並輸出這四週的平均溫度及最高...