new_worker
函数创建一个新的Employee
对象,并根据worker_number
值将其添加到Workers
字典中。下一个get_worker_by_id
函数应该得到给定的对象,但是程序给出了KeyError。
from employee import Employee
Workers = {}
def main():
new_worker()
get_worker_by_id()
def new_worker():
worker_name = input('Введите имя сотрудника: ')
worker_number = input('Введите его номер: ')
worker_depart = input('Введите его отдел: ')
worker_post = input('Введите его должность: ')
Workers[worker_number] = Employee(worker_name, worker_number, worker_depart, worker_post)
def get_worker_by_id():
id = (input('Чтобы найти сотрудника введите введите его номер: '))
print(Workers[id])
if __name__ == '__main__':
main()
class Employee():
def __init__(self, name, number, depart, post):
self.__name = name
self.__number = number
self.__depart = depart
self.__post = post
def set_name(self, name):
self.__name = name
def set_number(self, number):
self.__number = number
def set_depart(self, depart):
self.__depart = depart
def set_post(self, post):
self.__post = post
def get_name(self):
return self.__name
def get_number(self):
return self.__number
def get_depart(self):
return self.__depart
def get_post(self):
return self.__post
def __str__(self):
return 'Имя сотрудника: ' + self.__name()
+ 'nНомер сотрудника: ' + self.__number
+ 'nОтдел сотрудника: ' + self.__depart
+ 'nДолжность сотрудника: ' + self.__post
在下面的函数
def get_worker_by_id():
id = (input('Чтобы найти сотрудника введите введите его номер: '))
print(Workers[id]) # <---- This line
如果您输入的id
尚未添加到Workers
字典中,则需要处理此问题。你可以使用两种方法
- Try-except
def get_worker_by_id():
id = (input('Чтобы найти сотрудника введите введите его номер: '))
try:
print(Workers[id])
except KeyError:
print("Worker does not exists")
- 为字典使用
.get()
方法
def get_worker_by_id():
id = (input('Чтобы найти сотрудника введите введите его номер: '))
print(Workers.get(id, "Worker does not exists"))
同样,我可以看到在Employee Class
,__str__
方法
def __str__(self):
return 'Имя сотрудника: ' + self.__name() # <---- This line
+ 'nНомер сотрудника: ' + self.__number
+ 'nОтдел сотрудника: ' + self.__depart
+ 'nДолжность сотрудника: ' + self.__post
删除函数调用(self.__name() -> self.__name
),因为__name是类变量而不是函数!
还有一件事,不要使用变量id
,因为它是python中的内置函数,你实际上是在重写它。尝试使用worker_id
代替!:)