任务描述
本关任务:编写银行员工类BankEmployee,要求:
1.银行员工类的属性包括姓名name,工号num,工资salary
2.姓名name和工号num设置为私有属性,并将salay设置为默认参数3000
class BankEmployee:
# 初始化构造函数,设置私有属性name和num,并设置工资salary
def __init__(self, name, num, salary=3000):
self.__name = name # 私有属性
self.__num = num # 私有属性
self.salary = salary # 默认工资为3000
# 定义方法获取工资并输出格式
def get_salary(self):
print(f'{self.__name}领到这个月工资{self.salary}')
def main():
name = input() # 输入员工姓名
num = input() # 输入员工工号
bankemployee = BankEmployee(name, num) # 创建BankEmployee对象
bankemployee.get_salary() # 输出员工工资信息
if __name__ == "__main__":
main()
任务描述
本关任务:编写一个银行柜员类BankTeller,继承BankEmployee类,要求:
1.完善BankEmployee类,对私有属性name和num添加set方法和get方法以实现对私有属性的设置和获取
2.对工号的合法性进行检验,要求工号以字母s开头,如s678是合法工号,678不是合法工号
3.继承BankEmployee类,定义银行柜员类BankTeller类,其name属性和num属性和父类BankEmployee类相同,属性salary默认参数为2000
class BankEmployee:
def __init__(self, name="", num="", salary=2000):
self.__name = name
self.__num = num
self.salary = salary
def get_salary(self): # 定义领工资方法get_salary()
print(f"{self.__name}领到这个月工资{self.salary}")
# 添加对name和num的set/get方法
def set_name(self, name):
self.__name = name
def get_name(self):
return self.__name
def set_num(self, num):
if num.startswith('s'):
self.__num = num
else:
print("工号以s开头")
self.__num = None # 设置为 None 以表示无效工号
def get_num(self):
return self.__num
class BankTeller(BankEmployee):
def __init__(self, name="", num=""):
super().__init__(name, num, salary=2000)
def main():
bankteller = BankTeller()
name = input()
num = input()
bankteller.set_name(name) # 设置柜员姓名
bankteller.set_num(num) # 设置工号
# 输出工资
bankteller.get_salary()
# 再次检查工号并输出
if bankteller.get_num() is None:
print("工号以s开头") # 工号无效时输出
print(bankteller.get_name(), bankteller.get_num()) # 姓名和工号的输出
if __name__ == "__main__":
main()
任务描述
本关任务:编写一个经理类BankManage,要求:
1.继承BankEmployee类的构造函数
2.将BankEmployee类的属性name,num和salary设置为插槽
3.定义经理类BankManager类,继承BankEmployee类,并多一个提成commission私有属性
class BankEmployee:
__slots__ = ['__name', '__num', 'salary'] # 设置插槽
def __init__(self, name="", num="", salary=3000):
self.__name = name
self.__num = num
self.salary = salary
def get_salary(self): # 定义领工资方法get_salary()
print(f"{self.__name}领到这个月工资{self.salary}")
def set_name(self, name):
self.__name = name
def get_name(self):
return self.__name
def set_num(self, num):
if num.startswith("s"):
self.__num = num
else:
print("工号以s开头")
self.__num = None # 如果工号不合法,则设置为None
def get_num(self):
return self.__num
# 提成
class BankManager(BankEmployee):
def __init__(self, name="", num="", salary=3000, commission=0):
super().__init__(name, num, salary) # 调用父类构造函数
self.__commission = commission # 设置提成
def get_commission(self): # 定义获取提成的方法
print(f"{self.get_name()}领到这个月提成{self.__commission}")
def main():
name = input()
num = input()
salary = int(input())
commission = int(input())
bankmanager = BankManager(name, num, salary, commission)
bankmanager.get_commission()
if __name__ == "__main__":
main()