面向对象编程综合
# 创建父类
class Employee:
# 创建私有属性
__name = None
__salary = None
# 创建构造器初始化属性
def __init__(self, __name, __salary):
self.__name = __name
self.__salary = __salary
def get_annual(self):
# 返回员工年薪
return self.__salary * 12
# 创建公共方法供子类设置父类的私有属性
def set_name(self, __name):
self.__name = __name
def set_salsry(self, __salary):
self.__salary = __salary
# 创建公共方法供子类获取父类私有属性
def get_name(self):
return self.__name
def get_salary(self):
return self.__salary
# 创建Work子类
class Work(Employee):
def work(self):
# 调用父类的公共方法获取父类的私有属性
print(f"普通工人:{self.get_name()}负责执行项目内容————")
class Manager(Employee):
__bonus = None
def __init__(self, __name, __salary, __bonus):
# 调用父类的构造器初始化父类的属性
super().__init__(__name, __salary)
# 初始化子类的属性
self.__bonus = __bonus
# 重写get_annual方法
def get_annual(self):
return super().get_annual() + self.__bonus
def manage(self):
print(f"经理:{self.get_name()}负责管理项目进度————")
# 创建输出任意对象的姓名和年薪函数
def show_emp_annual(e: Employee):
print(f"员工姓名:{e.get_name()} 员工年薪:{e.get_annual()}")
# 创建对象并调用函数
work = Work("tom", 10000)
show_emp_annual(work)
manage = Manager("kk", 20000, 50000)
show_emp_annual(manage)
# 判断员工类别返回员工职责
def working(e):
# isinstance()可以判断对象是否在此类中,是返回True,否返回False
if isinstance(e, Work):
e.work()
elif isinstance(e, Manager):
e.manage()
else:
print("无法查询到员工信息")
# 调用函数
working(work)
working(manage)