ответвлено от main/python-labs
73 строки
3.6 KiB
Markdown
73 строки
3.6 KiB
Markdown
# Общее контрольное задание по теме 9
|
|
Киреев Юрий А-02-23
|
|
## Задание
|
|
Создайте и запишите в модуль класс, содержащий следующие компоненты:
|
|
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
|
|
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
|
|
- метод для обеспечения перевода сотрудника из одного отдела в другой;
|
|
- метод для изменения должности сотрудника;
|
|
- свойство, содержащее перечень (список) поощрений сотрудника.
|
|
Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобразите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.
|
|
## Решение
|
|
Модуль OKZ:
|
|
```py
|
|
class SOTRUDNIKI:
|
|
def __init__ (self, fio="", otdel="", dolzhnost="", oklad=1):
|
|
self.fio=fio
|
|
self.otdel=otdel
|
|
self.dolzhnost=dolzhnost
|
|
self.oklad=oklad
|
|
self.__reward=[]
|
|
def oklad_increase (self, znach):
|
|
self.oklad += znach
|
|
def perevod (self, new_otdel):
|
|
self.otdel = new_otdel
|
|
def dolzhnost_change(self, new_dolzhnost):
|
|
self.dolzhnost = new_dolzhnost
|
|
def get_reward(self):
|
|
return list(self.__reward)
|
|
def set_reward(self,reward):
|
|
self.__reward.append(reward)
|
|
def __str__(self):
|
|
return (f"Сотрудник: {self.fio}\n"
|
|
f"Отдел: {self.otdel}\n"
|
|
f"Должность: {self.dolzhnost}\n"
|
|
f"Оклад: {self.oklad}\n"
|
|
f"Поощрения: {self.__reward}")
|
|
reward = property(get_reward, set_reward)
|
|
```
|
|
Проверка модуля:
|
|
```py
|
|
>>> import OKZ
|
|
>>> emp1 = OKZ.SOTRUDNIKI("Киреев Ю.П", "CЭО Сила тока", "Командир", -1000)
|
|
>>> emp2 = OKZ.SOTRUDNIKI("Калякин П.А", "СЭО Сила тока", "Комиссар", 0)
|
|
>>> print(emp1)
|
|
Сотрудник: Киреев Ю.П
|
|
Отдел: CЭО Сила тока
|
|
Должность: Командир
|
|
Оклад: -1000
|
|
Поощрения: []
|
|
>>> print(emp2)
|
|
Сотрудник: Калякин П.А
|
|
Отдел: СЭО Сила тока
|
|
Должность: Комиссар
|
|
Оклад: 0
|
|
Поощрения: []
|
|
>>> emp1.perevod ("СЭО База")
|
|
>>> emp2.oklad_increase(5000)
|
|
>>> emp1.dolzhnost_change("Кандидат")
|
|
>>> emp2.set_reward("Значок лучшего бойца")
|
|
>>> emp1.set_reward("Пачка кириешек")
|
|
>>> print(emp1)
|
|
Сотрудник: Киреев Ю.П
|
|
Отдел: СЭО База
|
|
Должность: Кандидат
|
|
Оклад: -1000
|
|
Поощрения: ['Пачка кириешек']
|
|
>>> print(emp2)
|
|
Сотрудник: Калякин П.А
|
|
Отдел: СЭО Сила тока
|
|
Должность: Комиссар
|
|
Оклад: 5000
|
|
Поощрения: ['Значок лучшего бойца']
|
|
``` |