форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
131 строка
4.9 KiB
Markdown
131 строка
4.9 KiB
Markdown
# Общее задание по Теме 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
|
|
``` |