форкнуто от main/python-labs
Вы не можете выбрать более 25 тем
Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
6.0 KiB
6.0 KiB
Общее контрольное задание по Теме 9
Кузьменко Елена, А-02-23
Задание
Создайте и запишите в модуль класс, содержащий следующие компоненты:
- конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
- метод для обеспечения операции повышения оклада сотрудника на заданное значение;
- метод для обеспечения перевода сотрудника из одного отдела в другой;
- метод для изменения должности сотрудника;
- свойство, содержащее перечень (список) поощрений сотрудника.
Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобразите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.
Решение
Модуль task_mod.py представляет из себя:
1) Конструктор, задающий атрибутам начальные значения.
# Модуль task_mod.py
class Rabotnik:
def __init__(self, fio, otdel, dolzhnost, oklad):
self.fio = fio
self.otdel = otdel
self.dolzhnost = dolzhnost
self.oklad = oklad
self.__pooshreniya = [] # приватный атрибут для хранения поощрений
2) Метод для повышения оклада.
def povysit_oklad(self, summa):
if summa > 0:
self.oklad += summa
return f"Оклад повышен на {summa}"
return "Не повышен"
3) Метод для перевода между отделами.
def perevod_v_otdel(self, noviy_otdel):
self.otdel = noviy_otdel
4) Метод для изменения должности.
def izm_dolzhnost(self, new_dolzhnost):
self.dolzhnost = new_dolzhnost
5) Свойство, содержащее перечень поощрений сотрудника.
def chten_pooshreniy(self):
return self.__pooshreniya
def zapis_pooshreniy(self, pooshrenie):
self.__pooshreniya.append(pooshrenie)
def udalenie_pooshreniy(self):
self.__pooshreniya.clear()
pooshreniya = property(chten_pooshreniy, zapis_pooshreniy, udalenie_pooshreniy)
6) Отображение(дополнительный метод)
def __str__(self): # автоматически вызывается при print()
poosh = ', '.join(self.pooshreniya) if self.pooshreniya else 'нет'
return f"{self.fio}, {self.dolzhnost}, {self.otdel}, оклад: {self.oklad}, поощрения: {poosh}"
Проверка
1)Создание двух экземпляров и отображение значений:
>>> import task_mod
>>> from task_mod import Rabotnik
>>> z1 = Rabotnik("Иванов И.И.", "IT", "Программист", 170000)
>>> z2 = Rabotnik("Петров П.П.", "Бухгалтерия", "Бухгалтер", 155000)
>>> print(z1)
Иванов И.И., Программист, IT, оклад: 170000, поощрения: нет
>>> print(z2)
Петров П.П., Бухгалтер, Бухгалтерия, оклад: 155000, поощрения: нет
2)Операции перевода из отдела в отдел:
>>> z1.perevod_v_otdel("Разработка программного обеспечения")
>>> z2.perevod_v_otdel("Финансовый отдел")
>>> print(z1)
Иванов И.И., Программист, Разработка программного обеспечения, оклад: 170000, поощрения: нет
>>> print(z2)
Петров П.П., Бухгалтер, Финансовый отдел, оклад: 155000, поощрения: нет
3) Изменение должности и оклада:
>>> z1.izm_dolzhnost("Старший программист")
>>> z2.izm_dolzhnost("Главный бухгалтер")
>>> print(z1.povysit_oklad(15000))
Оклад повышен на 15000
>>> print(z2.povysit_oklad(30000))
Оклад повышен на 30000
>>> print(z1)
Иванов И.И., Старший программист, Разработка программного обеспечения, оклад: 185000, поощрения: нет
>>> print(z2)
Петров П.П., Главный бухгалтер, Финансовый отдел, оклад: 185000, поощрения: нет
4) Объявление благодарности:
>>> z1.zapis_pooshreniy("Благодарность за успешный проект")
>>> z1.zapis_pooshreniy("Премия")
>>> z2.zapis_pooshreniy("Грамота")
>>> print(f"{z1.pooshreniya}") # чтение через свойство
['Благодарность за успешный проект', 'Премия']
>>> print(f"{z2.chten_pooshreniy()}") # чтение через метод
['Грамота']
>>> print(z2)
Петров П.П., Главный бухгалтер, Финансовый отдел, оклад: 185000, поощрения: Грамота
>>> print(z2)
Петров П.П., Главный бухгалтер, Финансовый отдел, оклад: 185000, поощрения: Грамота
>>> z1.udalenie_pooshreniy() # удаление поощрений
>>> print(z1)