# Общее контрольное задание по теме 9 Степанов Артём, А-02-23 ## Задание Создайте и запишите в модуль класс, содержащий следующие компоненты: * конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения; * метод для обеспечения операции повышения оклада сотрудника на заданное значение; * метод для обеспечения перевода сотрудника из одного отдела в другой; * метод для изменения должности сотрудника; * свойство, содержащее перечень (список) поощрений сотрудника. Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобразите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности. ## Решение Содержимое модуля __Employee.py__: ```py class Employee: """Класс, описывающий основные данные о сотруднике организации""" def __init__(self, fio = "", otdel = "", dolzhnost = "", oklad = 0): self.fio = fio self.otdel = otdel self.dolzhnost = dolzhnost self.oklad = oklad self.__pooshreniya = [] self.pooshreniya = property( self.get_pooshreniya, self.set_pooshreniya, self.del_pooshreniya ) def change_oklad(self, diff): if (self.oklad + diff <= 0): print("Оклад сотрудника не может быть меньше либо равен 0") else: self.oklad += diff print(f"Оклад сотрудника {self.fio} был {'увеличен' if diff >= 0 else 'уменьшен'} на {abs(diff)}") def change_otdel(self, new_otdel): old_otdel = self.otdel self.otdel = new_otdel print(f"Сотрудник {self.fio} был переведен из отдела '{old_otdel}' в '{new_otdel}'") def change_dolzhnost(self, new_dolzhnost): old_dolzhnost = self.dolzhnost self.dolzhnost = new_dolzhnost print(f"Должность сотрудника {self.fio} была изменена с '{old_dolzhnost}' на '{new_dolzhnost}'") def get_pooshreniya(self): return list(self.__pooshreniya) def set_pooshreniya(self, value): if isinstance(value, str): self.__pooshreniya.append(value) print(f"Добавлено поощрение для сотрудника {self.fio}: '{value}'") elif isinstance(value, list): self.__pooshreniya.extend(value) print(f"Добавлены поощрения для сотрудника {self.fio}: {value}") else: print("Поощрение должно быть строкой или списком строк") def del_pooshreniya(self, item = ""): if not item: self.__pooshreniya.clear() print(f"Список поощрений сотрудника {self.fio} очищен") elif item in self.__pooshreniya: self.__pooshreniya.remove(item) print(f"Поощрение '{item}' сотрудника {self.fio} удалено") else: print(f"Такого поощрения нет в списке поощрений сотрудника {self.fio}") def get_employee_info(self): print(f""" ФИО: {self.fio} Отдел: {self.otdel} Должность: {self.dolzhnost} Оклад: {self.oklad} руб. Поощрения: {self.__pooshreniya if self.__pooshreniya else 'нет'} """) ``` Проверка класса на работоспособность: ```py >>> from Employee import Employee >>> employee1 = Employee("Иванов И.И.", "IT-отдел", "Программист", 75000) >>> employee2 = Employee("Смирнов С.С.", "Отдел продаж", "Менеджер", 50000) >>> employee1.get_employee_info() # Отображение полной информации об экземпляре класса ФИО: Иванов И.И. Отдел: IT-отдел Должность: Программист Оклад: 75000 руб. Поощрения: нет >>> employee2.get_employee_info() ФИО: Смирнов С.С. Отдел: Отдел продаж Должность: Менеджер Оклад: 50000 руб. Поощрения: нет >>> employee1.change_otdel("Административный отдел") # Изменение отдела Сотрудник Иванов И.И. был переведен из отдела 'IT-отдел' в 'Административный отдел' >>> employee2.change_oklad(-5000) # Изменение оклада (отрицательное число) Оклад сотрудника Смирнов С.С. был уменьшен на 5000 >>> employee2.change_oklad(7500) # Изменение оклада (положительное число) Оклад сотрудника Смирнов С.С. был увеличен на 7500 >>> employee2.change_dolzhnost("Аналитик продаж") # Изменение должности >>> Должность сотрудника Смирнов С.С. была изменена с 'Менеджер' на 'Аналитик продаж' >>> employee1.set_pooshreniya("Почетная грамота") # Добавление поощрения Добавлено поощрение для сотрудника Иванов И.И.: 'Почетная грамота' >>> employee1.set_pooshreniya(["Медаль", "Сертификат"]) # Добавление списка поощрений Добавлены поощрения для сотрудника Иванов И.И.: ['Медаль', 'Сертификат'] >>> employee1.get_pooshreniya() # Отображение списка поощрений ['Почетная грамота', 'Медаль', 'Сертификат'] >>> employee1.del_pooshreniya("Медаль") # Удаление определенного поощрения Поощрение 'Медаль' сотрудника Иванов И.И. удалено >>> employee1.del_pooshreniya() # Удаление всех поощрений Список поощрений сотрудника Иванов И.И. очищен >>> employee1.get_employee_info() ФИО: Иванов И.И. Отдел: Административный отдел Должность: Программист Оклад: 75000 руб. Поощрения: нет >>> employee2.get_employee_info() ФИО: Смирнов С.С. Отдел: Отдел продаж Должность: Аналитик продаж Оклад: 52500 руб. Поощрения: нет ```