4. 增加類別變數
類別變數(class variable)寫在類別中,而且不是寫方法之內(否則會變成方法內的區域變數)。類別變數可由「類別名稱.類別變數」的寫法取存它。
(1) Student的類別變數
以下是一個例子:
#廣域變數
school = 'NTUB'
class Student():
#類別變數
schoolName = '國立臺北商業大學'
def __init__(self, no, name):
self.no = no
self.name = name
def data(self):
return f'{Student.schoolName}, {self.no}, {self.name}'
第6行分別宣告一個類別變數,名稱是schoolName。 第13行使用了該類別變數,以「Student.schoolName」使用它。
產生實體:
s1 = Student('11056001', '王小明')
s2 = Student('11056002', '陳小華')
print(Student.schoolName) #取用類別變數
print(s1.data())
print(s2.data())
執行結果:
國立臺北商業大學 國立臺北商業大學, 11056001, 王小明 國立臺北商業大學, 11056002, 陳小華
說明:

(2) 「廣域變數」與「類別變數」同名
當「廣域變數」與「類別變數」同名時,取用類別變數時用「類別名稱.類別變數」的寫法;若使用變數時不加類別名稱,而且該名稱不存在區域變數中,則是指廣域變數。
#廣域變數
schoolName = 'NTUB'
class Student():
#類別變數
schoolName = '國立臺北商業大學'
def __init__(self, no, name):
self.no = no
self.name = name
def data(self):
return f'{schoolName}, {self.no}, {self.name}'
#-------------------------
s1 = Student('11056001', '王小明')
s2 = Student('11056002', '陳小華')
print(Student.schoolName) #取用類別變數
print(s1.data())
print(s2.data())
執行結果:
國立臺北商業大學 NTUB, 11056001, 王小明 NTUB, 11056002, 陳小華
說明:

問題:
撰寫一個「員工」(Employee)的類別,其中有一個類別變數,wage=250,代表員工每小時的加班薪水為250元。另外有一個建構元,分別設定員工編號、姓名、加班時數。另外也有4個實體方法,分別可以回傳員工編號、姓名、加班時數、加班費(每小時加班薪水*加班時數)。請建立以下2個實體,顯示他們的編號、姓名、加班時數、加班費: 編號:A001,姓名:王小明,加班時數:10 編號:A002,姓名:陳小華,加班時數:6