我试图编写一个基本的员工程序来帮助我了解python是如何工作的。虽然,程序工作,但我试图获得的输出并不是我想要的。这是我到目前为止掌握的代码,它相当长,但我相信它相当直截了当:
class Employee:
def __init__(self, first, last, id, pay):
self.first = first
self.last = last
self.id = id
self.pay = pay
def info(self):
if isinstance(self, Supervisor):
return print("Employee ID:", self.id, "\nFull name:", self.first, self.last, "\nSalary:", self.pay,
"\nEmployee's under supervision:", self.print_emp())
elif isinstance(self, Developer):
return print("Employee ID:", self.id, "\nFull name:", self.first, self.last, "\nSalary:", self.pay,
"\nPrograming Language:", self.prog_laung)
else:
return print("Employee ID:", self.id, "\nFull name:", self.first, self.last, "\nSalary:", self.pay)
class Supervisor(Employee):
def __init__(self, first, last, id, pay, emp_under_sup = None):
super().__init__(first, last, id, pay)
if emp_under_sup is None:
self.emp_under_sup = []
else:
self.emp_under_sup = emp_under_sup
def add_emp(self, emp):
if emp not in self.emp_under_sup:
self.emp_under_sup.append(emp)
def print_emp(self):
for emp in self.emp_under_sup:
print(emp.first, emp.last)
class Developer(Employee):
def __init__(self, first, last, id, pay, prog_laung):
super().__init__(first, last, id, pay)
self.prog_laung = prog_laung
sup1 = Supervisor('Jake', 'Derber', 1, 70000)
sup1.info()
print()
dev1 = Developer('Rob', "M", 2, 60000, 'Python and Java')
sup1.add_emp(dev1)
sup1.info()
上述代码产生的输出如下:
Employee ID: 1
Full name: Jake Derber
Salary: 70000
Employee's under supervision: None
Rob M
Employee ID: 1
Full name: Jake Derber
Salary: 70000
Employee's under supervision: None
但是,我真正想要的输出是不同的。我试图生成的输出是:
Employee ID: 1
Full name: Jake Derber
Salary: 70000
Employee's under supervision: None
Employee ID: 1
Full name: Jake Derber
Salary: 70000
Employee's under supervision: Rob M
我试过几种不同的方法。我确信我离这儿不远。如果有人能向我解释为什么输出不是我所期望的?我试过运行一个调试器,但我正在使用一个新的ide(pycharm),我无法同时显示我的输出和调试信息,所以这是没有帮助的。