ответвлено от main/python-labs
3.6 KiB
3.6 KiB
Общее контрольное задание по теме 9
Киреев Юрий А-02-23
Задание
Создайте и запишите в модуль класс, содержащий следующие компоненты:
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
- метод для обеспечения перевода сотрудника из одного отдела в другой;
- метод для изменения должности сотрудника;
- свойство, содержащее перечень (список) поощрений сотрудника. Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобразите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.
Решение
Модуль OKZ:
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)
Проверка модуля:
>>> 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
Поощрения: ['Значок лучшего бойца']