Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

4.9 KiB

Общее задание по Теме 9

Задание

Создайте и запишите в модуль класс, содержащий следующие компоненты:

  • конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;

  • метод для обеспечения операции повышения оклада сотрудника на заданное значение;

  • метод для обеспечения перевода сотрудника из одного отдела в другой;

  • метод для изменения должности сотрудника;

  • свойство, содержащее перечень (список) поощрений сотрудника.

Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобра-зите эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изменения должности и оклада, объявления благодарности.

Решение

Содержание файла EMPLOYEES.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')

Работа модуля

>>> 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