|
|
发表于 2023-10-26 15:08:38
|
显示全部楼层
本帖最后由 FoolZenYin_甫寸 于 2023-10-30 15:53 编辑
0.只要符合调用的方法名,不管类长啥样都给调用运行多态在编程是一个非常重要的概念,它是指同一个运算符、函数或者对象在不同的场景下,具有不同的作用效果
1.只要符合调用的方法名,不管类长啥样都给调用运行提高代码的灵活性
2.可以的 √
3.有一只鸟他长得想鸭子,跟鸭子一样的翅膀和鸭子一样游泳,那么我们称之为鸭子√
4.降低了耦合,因为只要方法属性名相同即可调用,那么更方便引用调用√
5.不属于,如果是增加了字符串类型还能说明是的,属于函数层面的多态现象。
动动手
- #甫寸版权所有嘻嘻#
- class Base_info:
- def __init__(self, name, job, grade, year, salary):
- self.name = name
- self.job = job
- self.grade = grade
- self.year = year
- self.salary = salary
-
- class Employee(Base_info):
- def __init__(self, name, grade, year):
- super().__init__(name, "E", grade, year, 3000 + 500 * int(grade) + 50 * int(year))
- class Teamleader(Base_info):
- def __init__(self, name, grade, year):
- super().__init__(name, "T", grade, year, 4000 + 800 * int(grade) + 100 * int(year))
- class Manager(Base_info):
- def __init__(self, name, grade, year):
- super().__init__(name, "M", grade, year, 5000 + 1000 * (int(grade) + int(year)))
-
- class Grade_checkMixin:
- def grade_check(self, job, grade):
- if job == "E":
- if int(grade) > 10:
- print("超出等级!")
- else:
- return "pass"
-
- if job == "T":
- if int(grade) > 6:
- print("超出等级!")
- else:
- return "pass"
-
- if job == "M":
- if int(grade) > 3:
- print("超出等级!")
- else:
- return "pass"
- class Program_funtion(Grade_checkMixin):
- def __init__(self) :
- self.uid = 10000
- self.member_data = {}
-
- def intrance(self):
- while True:
- op = input("1.录入;2.查询;3.升级;4.降级;5.退出:")
- if op == "1":
- self.check_in()
- if op == "2":
- self.check_msg()
- if op == "3":
- self.promotion()
- if op == "4":
- self.degration()
- if op == "5":
- break
-
- def check_in(self):
- name = input("姓名:")
- job = input("职位(E.普通员工;T:组长;M:经理):")
- year = input("工龄:")
- grade = input("级别:")
- while self.grade_check(job, grade) != "pass":
- grade = input("请重新输入级别:")
- if job == "E":
- member = Employee(name, grade, year)
- elif job == "T":
- member = Teamleader(name, grade, year)
- elif job == "M":
- member = Manager(name, grade, year)
- self.member_data[self.uid] = member
- print(f"录入成功!姓名:{name},工号:{self.uid},薪资:{self.member_data[self.uid].salary}")
- self.uid += 1
-
- def get_uid(self):
- while True:
- uid = int(input("请输入工号:"))
- if uid not in self.member_data:
- print("该工号不存在!")
- else:
- break
- return uid
-
- def get_name(self, uid):
- print(f"姓名:{self.member_data[uid].name}")
-
- def get_job(self, uid):
- print(f"职位:{self.member_data[uid].job}")
-
- def get_grade(self, uid):
- print(f"级别:{self.member_data[uid].grade}")
-
- def get_year(self, uid):
- print(f"工龄:{self.member_data[uid].year}")
-
- def get_salary(self, uid):
- print(f"薪资:{self.member_data[uid].salary}")
-
- def check_msg(self):
- op_2 = input("1.员工查询;2.职位查询:")
- if op_2 == "1":
- uid = self.get_uid()
- self.get_name(uid)
- self.get_job(uid)
- self.get_year(uid)
- self.get_salary(uid)
- if op_2 == "2":
- op_3 = input("职位(E.普通员工;T:组长;M:经理):")
- if op_3 == "E":
- count = 0
- for each in self.member_data:
- if self.member_data[each].job == "E":
- count += 1
- print(f"目前普通员工共有{count}人")
- for each in self.member_data:
- if self.member_data[each].job == "E":
- print(f"{each} - {self.member_data[each].name}")
- elif op_3 == "T":
- count = 0
- for each in self.member_data:
- if self.member_data[each].job == "T":
- count += 1
- print(f"目前普通员工共有{count}人")
- for each in self.member_data:
- if self.member_data[each].job == "T":
- print(f"{each} - {self.member_data[each].name}")
- if op_3 == "M":
- count = 0
- for each in self.member_data:
- if self.member_data[each].job == "M":
- count += 1
- print(f"目前普通员工共有{count}人")
- for each in self.member_data:
- if self.member_data[each].job == "M":
- print(f"{each} - {self.member_data[each].name}")
-
- def promotion(self):
- pro_uid = int(input("请输入工号:"))
- print(f"{self.member_data[pro_uid].name},工号:{pro_uid},当前职位:{self.member_data[pro_uid].job}{self.member_data[pro_uid].grade},当前薪资:{self.member_data[pro_uid].salary}")
- rank_up = input("请输入需要增加的级数:")
- if self.member_data[pro_uid].job == "E":
- if int(self.member_data[pro_uid].grade) + int(rank_up) > 10:
- self.member_data[pro_uid].job = "T"
- self.member_data[pro_uid].grade = "1"
- old_salary = int(self.member_data[pro_uid].salary)
- self.member_data[pro_uid].salary = 4000 + 800 * int(self.member_data[pro_uid].grade) + 100 * int(self.member_data[pro_uid].year)
- print("升级成功!")
- print(f"{self.member_data[pro_uid].name},工号:{pro_uid},升级后职位:{self.member_data[pro_uid].job}{self.member_data[pro_uid].grade},升级后薪资:{self.member_data[pro_uid].salary}(+{self.member_data[pro_uid].salary - old_salary})")
- else:
- self.member_data[pro_uid].grade = int(self.member_data[pro_uid].grade) + int(rank_up)
- old_salary = int(self.member_data[pro_uid].salary)
- self.member_data[pro_uid].salary = 3000 + 500 * int(self.member_data[pro_uid].grade) + 50 * int(self.member_data[pro_uid].year)
- print("升级成功!")
- print(f"{self.member_data[pro_uid].name},工号:{pro_uid},升级后职位:{self.member_data[pro_uid].job}{self.member_data[pro_uid].grade},升级后薪资:{self.member_data[pro_uid].salary}(+{self.member_data[pro_uid].salary - old_salary})")
-
- elif self.member_data[pro_uid].job == "T":
- if int(self.member_data[pro_uid].grade) + int(rank_up) > 6:
- self.member_data[pro_uid].job = "M"
- self.member_data[pro_uid].grade = "1"
- old_salary = int(self.member_data[pro_uid].salary)
- self.member_data[pro_uid].salary = 5000 + 1000 * (int(self.member_data[pro_uid].grade) + int(self.member_data[pro_uid].year))
- print("升级成功!")
- print(f"{self.member_data[pro_uid].name},工号:{pro_uid},升级后职位:{self.member_data[pro_uid].job}{self.member_data[pro_uid].grade},升级后薪资:{self.member_data[pro_uid].salary}(+{self.member_data[pro_uid].salary - old_salary})")
- else:
- self.member_data[pro_uid].grade = int(self.member_data[pro_uid].grade) + int(rank_up)
- old_salary = int(self.member_data[pro_uid].salary)
- self.member_data[pro_uid].salary = 4000 + 800 * int(self.member_data[pro_uid].grade) + 100 * int(self.member_data[pro_uid].year)
- print("升级成功!")
- print(f"{self.member_data[pro_uid].name},工号:{pro_uid},升级后职位:{self.member_data[pro_uid].job}{self.member_data[pro_uid].grade},升级后薪资:{self.member_data[pro_uid].salary}(+{self.member_data[pro_uid].salary - old_salary})")
-
- elif self.member_data[pro_uid].job == "M":
- if int(self.member_data[pro_uid].grade) + int(rank_up) > 3:
- print("没得再升啦,再升你来当老板!")
- else:
- self.member_data[pro_uid].grade = int(self.member_data[pro_uid].grade) + int(rank_up)
- old_salary = int(self.member_data[pro_uid].salary)
- self.member_data[pro_uid].salary = 5000 + 1000 * (int(self.member_data[pro_uid].grade) + int(self.member_data[pro_uid].year))
- print("升级成功!")
- print(f"{self.member_data[pro_uid].name},工号:{pro_uid},升级后职位:{self.member_data[pro_uid].job}{self.member_data[pro_uid].grade},升级后薪资:{self.member_data[pro_uid].salary}(+{self.member_data[pro_uid].salary - old_salary})")
- def degration(self):
- deg_uid = int(input("请输入工号:"))
- print(f"{self.member_data[deg_uid].name},工号:{deg_uid},当前职位:{self.member_data[deg_uid].job}{self.member_data[deg_uid].grade},当前薪资:{self.member_data[deg_uid].salary}")
- rank_down = input("请输入需要降级的级数:")
- if self.member_data[deg_uid].job == "E":
- if int(self.member_data[deg_uid].grade) - int(rank_down) <= 0:
- print("没得再降啦,再降只能炒掉啦!")
- else:
- self.member_data[deg_uid].grade = int(self.member_data[deg_uid].grade) - int(rank_down)
- old_salary = int(self.member_data[deg_uid].salary)
- self.member_data[deg_uid].salary = 3000 + 500 * int(self.member_data[deg_uid].grade) + 50 * int(self.member_data[deg_uid].year)
- print("降级成功!")
- print(f"{self.member_data[deg_uid].name},工号:{deg_uid},降级后职位:{self.member_data[deg_uid].job}{self.member_data[deg_uid].grade},降级后薪资:{self.member_data[deg_uid].salary}(-{old_salary - self.member_data[deg_uid].salary})")
-
- elif self.member_data[deg_uid].job == "T":
- if int(self.member_data[deg_uid].grade) - int(rank_down) <= 0:
- self.member_data[deg_uid].job = "E"
- self.member_data[deg_uid].grade = "10"
- old_salary = int(self.member_data[deg_uid].salary)
- self.member_data[deg_uid].salary = 3000 + 500 * 10 + 50 * int(self.member_data[deg_uid].year)
- print("降级成功!")
- print(f"{self.member_data[deg_uid].name},工号:{deg_uid},降级后职位:{self.member_data[deg_uid].job}{self.member_data[deg_uid].grade},降级后薪资:{self.member_data[deg_uid].salary}(-{old_salary - self.member_data[deg_uid].salary})")
- else:
- self.member_data[deg_uid].grade = int(self.member_data[deg_uid].grade) - int(rank_down)
- old_salary = int(self.member_data[deg_uid].salary)
- self.member_data[deg_uid].salary = 4000 + 800 * int(self.member_data[deg_uid].grade) + 100 * int(self.member_data[deg_uid].year)
- print("降级成功!")
- print(f"{self.member_data[deg_uid].name},工号:{deg_uid},降级后职位:{self.member_data[deg_uid].job}{self.member_data[deg_uid].grade},降级后薪资:{self.member_data[deg_uid].salary}(-{old_salary - self.member_data[deg_uid].salary})")
-
- elif self.member_data[deg_uid].job == "M":
- if int(self.member_data[deg_uid].grade) - int(rank_down) < 0:
- self.member_data[deg_uid].job = "T"
- self.member_data[deg_uid].grade = "6"
- old_salary = int(self.member_data[deg_uid].salary)
- self.member_data[deg_uid].salary = 4000 + 800 * 6 + 100 * int(self.member_data[deg_uid].year)
- print("降级成功!")
- print(f"{self.member_data[deg_uid].name},工号:{deg_uid},降级后职位:{self.member_data[deg_uid].job}{self.member_data[deg_uid].grade},降级后薪资:{self.member_data[deg_uid].salary}(-{old_salary - self.member_data[deg_uid].salary})")
- else:
- self.member_data[deg_uid].grade = int(self.member_data[deg_uid].grade) - int(rank_down)
- old_salary = int(self.member_data[deg_uid].salary)
- self.member_data[deg_uid].salary = 5000 + 1000 * (int(self.member_data[deg_uid].grade) + int(self.member_data[deg_uid].year))
- print("降级成功!")
- print(f"{self.member_data[deg_uid].name},工号:{deg_uid},降级后职位:{self.member_data[deg_uid].job}{self.member_data[deg_uid].grade},降级后薪资:{self.member_data[deg_uid].salary}(-{old_salary - self.member_data[deg_uid].salary})")
-
- def main():
- p = Program_funtion()
- p.intrance()
- main()
复制代码 √ |
|