Python公司有四类人员: 经理、技术人员、 推销人员以及销售经理。 员工的共有属性有:姓名、级别、职工工号,月薪总额;新增的职工的工号,由公司现有的员工工号最大值加1得到:方法有promote(), 功能是改变员工的级别: 经理是固定月薪制:技术人员是时薪制:推销人员按销售额提成:销售经理则是固定月薪加销售额提成。 每种人员的月薪总额计算方法如下: 经理: 8000 元/月;技术人员: 100 元/小时: 推销人员: 4%提成:销售经理: 5000 元/月+5%提成。 请编写程序,创建各类
时间: 2023-12-14 10:36:11 浏览: 35
人员对象,并实现计算月薪总额和改变员工级别的功能。
```python
class Employee:
def __init__(self, name, level):
self.name = name
self.level = level
self.id = self.get_new_id()
self.salary = 0
@staticmethod
def get_new_id():
# 获取新的工号,由公司现有的员工工号最大值加1得到
# 这里用一个静态变量来存储当前最大的工号
if not hasattr(Employee, 'max_id'):
Employee.max_id = 0
Employee.max_id += 1
return Employee.max_id
def promote(self, new_level):
# 改变员工的级别
self.level = new_level
class Manager(Employee):
def __init__(self, name):
super().__init__(name, "Manager")
self.salary = 8000
class Technician(Employee):
def __init__(self, name, hours):
super().__init__(name, "Technician")
self.hours = hours
self.salary = 100 * hours
class Salesman(Employee):
def __init__(self, name, sales):
super().__init__(name, "Salesman")
self.sales = sales
self.salary = 0.04 * sales
class SalesManager(Employee):
def __init__(self, name, sales):
super().__init__(name, "SalesManager")
self.sales = sales
self.salary = 5000 + 0.05 * sales
```
使用示例:
```python
# 创建各个职位的员工对象
manager = Manager("Jack")
technician = Technician("Tom", 80)
salesman = Salesman("Lucy", 50000)
sales_manager = SalesManager("Bob", 80000)
# 查看各个员工的信息
print(manager.name, manager.level, manager.id, manager.salary)
print(technician.name, technician.level, technician.id, technician.salary)
print(salesman.name, salesman.level, salesman.id, salesman.salary)
print(sales_manager.name, sales_manager.level, sales_manager.id, sales_manager.salary)
# 改变员工的级别
manager.promote("Senior Manager")
print(manager.name, manager.level, manager.id, manager.salary)
```