5. 增加靜態方法

靜態方法(static method)是寫在類別中的函式,並且函式指令的前方加上「@staticmethod」裝飾它。靜態方法沒有self傳入參數,因為它不屬於各個實體之內,而是存在類別之中的函式。呼叫靜態方法時,使用「類別名稱.靜態方法名稱」的寫法。

(1) Employee的靜態方法

以下是一個例子:

class Employee():
    @staticmethod
    def tax(income):
        if income > 40000:
            return int(income*0.23)
        else:
            return int(income*0.19)

第2行用@staticmethod裝飾其後的方法成為一個靜態方法。 第3行的tax(income)是一個靜態方法。 第4~7行是靜態方法的內容,用來計算員工的稅金。 使用靜態方法並不需要先建立實體變數,可以直接用「Employee.tax()」呼叫它。

呼叫靜態方法:

print(f'{Employee.tax(65000):,}元')

執行結果:

14,950元

說明:

問題:

撰寫一個「員工」(Employee)的類別,其中有一個靜態方法,名稱是「overtimes」,用來計算員工的加班費。此方法傳入「職等」(rank)及「加班時數」(hours)共2個參數,而加班費的計算方式如下:如果職等是A,沒有加班費;如果職等是B、C、D、F其中之一,每小時加班費265元;其他職等的每小時加班費是220元。加班費=每小時加班費*加班時數。請測試以下的資料: 職等:A,加班時數:10 職等:B,加班時數:11 職等:C,加班時數:12 職等:D,加班時數:13 職等:E,加班時數:14 職等:F,加班時數:15