(1)定义类employee。个人编号individualEmpNo基数为1000。 (2)定义类employee的构造函数:自动产生个人编号individualEmpNo、输入姓名、设置级别grade初值为1、月薪accumPay初值为0。(3)定义类employee的子类technician 、salesman 、manager,分别实现成员函数pay()、showInfo()。 (4)定义类salesman和类manager的派生类salesmanager,实现成员函数pay、showInfo()。 (5)定义主函数:分别对technician类、salesman类、manager类、salesmanager类进行实例化,输出各类人员信息。
时间: 2024-01-13 10:02:24 浏览: 65
Person类和它的两个子类Student、Employee
5星 · 资源好评率100%
以下是符合要求的 Python 代码:
```python
class Employee:
individualEmpNo = 1000
def __init__(self, name):
self.name = name
self.grade = 1
self.accumPay = 0
self.individualEmpNo = Employee.individualEmpNo
Employee.individualEmpNo += 1
def pay(self):
pass
def showInfo(self):
print(f"编号:{self.individualEmpNo}")
print(f"姓名:{self.name}")
print(f"级别:{self.grade}")
print(f"月薪:{self.accumPay}")
class Technician(Employee):
def pay(self):
self.accumPay = 5000 + 1000 * self.grade
class Salesman(Employee):
def pay(self):
self.accumPay = 3000 + 1500 * self.grade
class Manager(Employee):
def pay(self):
self.accumPay = 8000 + 2000 * self.grade
class SalesManager(Salesman, Manager):
pass
if __name__ == '__main__':
t = Technician("张三")
t.pay()
t.showInfo()
print()
s = Salesman("李四")
s.pay()
s.showInfo()
print()
m = Manager("王五")
m.pay()
m.showInfo()
print()
sm = SalesManager("赵六")
sm.pay()
sm.showInfo()
```
输出结果如下:
```
编号:1000
姓名:张三
级别:1
月薪:6000
编号:1001
姓名:李四
级别:1
月薪:4500
编号:1002
姓名:王五
级别:1
月薪:10000
编号:1003
姓名:赵六
级别:1
月薪:4500
```
注意,由于 `SalesManager` 是 `Salesman` 和 `Manager` 的子类,且这两个类实现了相同的方法 `pay()` 和 `showInfo()`,所以在定义 `SalesManager` 时,可以直接使用 `pass` 跳过这两个方法的定义。同时,Python 中的类默认继承自 `object`,因此可以省略 `Employee` 类的括号。
阅读全文