头歌python实训通关七——继承和多态

第1关:定义银行员工类BankEmployee

任务描述

本关任务:编写银行员工类BankEmployee,要求: 1.银行员工类的属性包括姓名name,工号num,工资salary 2.姓名name和工号num设置为私有属性,并将salay设置为默认参数3000

相关知识

为了完成本关任务,你需要掌握:1.类的定义,2.私有属性的设置。

编程要求

根据提示,在右侧编辑器补充代码,实现要求的输出。

测试说明

平台会对你编写的代码进行测试:

测试输入: 张飞 007 预期输出: 张飞领到这个月工资3000

class BankEmployee():
    def __init__(self,name,num):
        self.__name__ =name
        self.__num__=num
        self.__salary__=3000

    def get_salary(self):
        s=self.__name__+"领到这个月工资"+str(self.__salary__)
        print(s)
def main():
    name = input()
    num = input()
    bankemployee = BankEmployee(name,num)
    bankemployee.get_salary()

if __name__=="__main__":
    main()

第2关:定义银行柜员类BankTeller

任务描述

本关任务:编写一个银行柜员类BankTeller,继承BankEmployee类,要求: 1.完善BankEmployee类,对私有属性name和num添加set方法和get方法以实现对私有属性的设置和获取 2.对工号的合法性进行检验,要求工号以字母s开头,如s678是合法工号,678不是合法工号 3.继承BankEmployee类,定义银行柜员类BankTeller类,其name属性和num属性和父类BankEmployee类相同,属性salary默认参数为2000

相关知识

为了完成本关任务,你需要掌握:1.类的继承,2.set/get方式。

编程要求

根据提示,在右侧编辑器补充代码,输出需要的内容。

测试说明

平台会对你编写的代码进行测试:

测试输入: 张飞 007 预期输出: 工号以s开头 张飞领到这个月工资2000 工号以s开头 张飞 None

测试输入: 赵云 s009 预期输出: 赵云领到这个月工资2000 赵云 s009

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("%s领到这个月工资%d"%(self.__name,self.salary))
    def get_name(self):
        return self.__name
    def set_name(self,name):
        self.__name=name
    def get_num(self):
        return self.__num
    def set_num(self,num):
        self.__num=num

  
class BankTeller(BankEmployee):
    def set_num(self,num):
        if num[0]!='s':
            print("工号以s开头")
            self.__num=""
        else:
            self.__num=num
    def get_num(self):
        if self.__num==""or self.__num[0]!='s':
            print("工号以s开头")
            return None
        return self.__num
        
def main():
    bankteller = BankTeller()
    name = input()
    num = input()
    bankteller.set_name(name)
    bankteller.set_num(num)
    bankteller.get_salary()
    print(bankteller.get_name(),bankteller.get_num())
    
if __name__=="__main__":
    main()

第3关:定义经理类BankManager

相关知识

为了完成本关任务,你需要掌握:1.继承,2.插槽。

编程要求

根据提示,在右侧编辑器补充代码,实现需要的输出。

测试说明

平台会对你编写的代码进行测试:

测试输入: 刘备 s001 8000 5000 预期输出: 刘备领到这个月提成5000

class BankEmployee():
 #    请在此处添加代码 设置插槽    #
 # *************begin************#

 # **************end*************#
    def __init__(self,name="",num="",salary=3000): 
        self.__name = name
        self.__num = num
        self.salary = salary
    def get_salary(self): #定义领工资方法get_salary()
        print("%s领到这个月工资%d"%(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开头")
    def get_num(self):
        return self.__num

#commission 提成
class BankManager(BankEmployee):
# 请在此处添加代码 完成BankTeller类的定义#
# ************* begin  ************#
    def __init__(self,name,num,salary,commission):
        BankEmployee.__init__(self,name,num,salary)
        self.__commission=commission
    def get_commission(self):
        print("%s领到这个月提成%d"%(self.get_name(),self.__commission))
    # ************** end  *************#
        
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()

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值