# Общее задание по Теме 9 ## Задание Создайте и запишите в модуль класс, содержащий следующие компоненты: - конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения; - метод для обеспечения операции повышения оклада сотрудника на заданное значение; - метод для обеспечения перевода сотрудника из одного отдела в другой; - метод для изменения должности сотрудника; - свойство, содержащее перечень (список) поощрений сотрудника. Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобра-зите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности. ## Решение Содержание файла EMPLOYEES.py ```py class Employee: def __init__(self, fio="null", otdel = "null", dolz = "null", oklad = 0): self.fio = fio self.otdel = otdel self.dolz = dolz self.oklad = oklad self.__bonus = [] def increase_oklad(self,summa): self.oklad += summa print(f'Оклад {self.fio} был повышен на {summa}, новый оклад равен {self.oklad}') def move_otdel(self,new_otdel): old_otdel = self.otdel self.otdel = new_otdel print(f'Сотрудник {self.fio} был переведен из {old_otdel} в {new_otdel}') def change_dolz(self,new_dolz): old_dolz = self.dolz self.dolz = new_dolz print(f'Должность сотрудника {self.fio} была изменена с {old_dolz} на {new_dolz}') def give_bonus(self,bonus): self.__bonus.append(bonus) print(f'Сотруднику {self.fio} была выражена благодарность: {bonus}') @property def bonuses(self): return self.__bonus.copy() def info_out(self): print('Информация о сотруднике:') print(f'\n ФИО: {self.fio}') print(f'\n Отдел: {self.otdel}') print(f'\n Должность: {self.dolz}') print(f'\n Оклад: {self.oklad:.2f}') if self.__bonus: print('Поощрения: ') for i, poosh in enumerate(self.__bonus, 1): print(f" {i}. {poosh}") else: print('no bonuses') ``` Работа модуля ```py >>> from EMPLOYEES import Employee >>> e1 = Employee("Иванов И.И.", "IT", "Программист", 110000) >>> e2 = Employee("Сидоров С.Е.", "Плановый", "Эконмист", 100000) >>> e1.info_out() Информация о сотруднике: ФИО: Иванов И.И. Отдел: IT Должность: Программист Оклад: 110000.00 no bonuses >>> e2.info_out() Информация о сотруднике: ФИО: Сидоров С.Е. Отдел: Плановый Должность: Эконмист Оклад: 100000.00 no bonuses >>> e1.increase_oklad(70000) Оклад Иванов И.И. был повышен на 70000, новый оклад равен 180000 >>> e2.move_otdel('Логистика') Сотрудник Сидоров С.Е. был переведен из Плановый в Логистика >>> e2.change_dolz('Аналитик') Должность сотрудника Сидоров С.Е. была изменена с Эконмист на Аналитик >>> e1.give_bonus('За успешную работу в качестве лидера IT команды') Сотруднику Иванов И.И. была выражена благодарность: За успешную работу в качестве лидера IT команды >>> e1.info_out() Информация о сотруднике: ФИО: Иванов И.И. Отдел: IT Должность: Программист Оклад: 180000.00 Поощрения: 1. За успешную работу в качестве лидера IT команды >>> e2.info_out() Информация о сотруднике: ФИО: Сидоров С.Е. Отдел: Логистика Должность: Аналитик Оклад: 100000.00 no bonuses ```