Python基礎學習筆記——定義一個僱員類Employee(屬性、運算子過載、自定義id、判斷薪水)
阿新 • • 發佈:2021-02-08
此問題來自高淇老師講義課後習題:
問題描述:
定義一個 Employee 僱員類,要求如下:
(1) 屬性有:id、name、salary
(2) 運算子過載+:實現兩個物件相加時,預設返回他們的薪水和
(3) 構造方法要求:輸入 name、salary,不輸入 id。id 採用自增的方式,從 1000 開
始自增,第一個新增物件是 1001,第二個新增物件是 1002。
(4) 根據 salary 屬性,使用@property 設定屬性的 get 和 set 方法。set 方法要求輸
入:1000-50000 範圍的數字。
程式碼:
class Employee:
__init_flag = True
# 定義例項屬性
def __init__(self, ID, name, salary):
self.id = ID
self.name = name
self.salary = salary
def __add__(self, other): # 這裡過載了加號的功能__add__
if isinstance(other, Employee):
return self.salary + other.salary
else:
return "不是同類物件,不能相加"
def input(self): # 定義自增方式
d = 1000
if self.id == ' ': # 當不輸入id時
if Employee.__init_flag: # 第一次給無id員工賦值id
self.id = 1000
Employee.__init_flag = False
return self.id
else: # 第二次及以後給無id員工賦值
d = d + 1
self.id = d
return self.id
else: # 當輸入id時
return self.id
def get_salary(self):
return self.salary
def set_salary(self):
if 1000 < self.salary < 50000:
pass
else:
print("錄入錯誤!薪水在1000-50000這個範圍")
p1 = Employee(1000, "張三", 3000)
p2 = Employee(1001, "李四", 3500)
print(p1 + p2) # 兩個物件相加時,預設返回他們的薪水和
p3 = Employee(' ', "王五", 4000)
p3.input()
print(p3.id) # 驗證自增方式
p4 = Employee(' ', "趙六", 4500)
p4.input()
print(p4.id) # 驗證自增方式
p5 = Employee('1006', "趙六", -5000)
p5.input()
p5.set_salary() # 驗證薪水範圍是否正常
程式結果:
程式還有需要完善的地方,歡迎大家多多交流