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

3.1 KiB

Общее контрольное задание по теме 9

Мамакин Ярослав, А-02-23

Задание

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

  • конструктор, задающий четырем атрибутам (fio, otdel, dolzhnost, oklad), представляющим фамилии сотрудников, название отделов, названия должностей сотрудников и размеры их окладов, некоторые начальные значения;
  • метод для обеспечения операции повышения оклада сотрудника на заданное значение;
  • метод для обеспечения перевода сотрудника из одного отдела в другой;
  • метод для изменения должности сотрудника;
  • свойство, содержащее перечень (список) поощрений сотрудника. Создайте 2 экземпляра класса, задайте им некоторые значения атрибутов и свойства. Отобрази-те эти значения. Попробуйте с этими экземплярами операции перевода из отдела в отдел, изме-нения должности и оклада, объявления благодарности.

Решение

Содержимое модуля:

class Employee:
    def __init__(self, fio, otdel, dolzhnost, oklad):
        self.fio = fio
        self.otdel = otdel
        self.dolzhnost = dolzhnost
        self.oklad = oklad
        self.bonus = []
        
    def give_raise(self, amount):
        print(f'Оклад повышен на {amount} рублей, новый оклад: {self.oklad + amount}')
        self.oklad = self.oklad + amount
        
    def transfer(self, new_otdel):
        self.otdel = new_otdel

    def position(self, new_position):
        self.dolzhnost = new_position

    def give_bonus(self, bonus):
        self.bonus.append(bonus)

    def read_bonus(self):
        return self.bonus

    def remove_bonus(self):
        if len(self.bonus) != 0:
            return self.bonus.pop()
        return None

    svojstvo = property(read_bonus, give_bonus, remove_bonus)

Проверка работы:

>>> import EMP
>>> de = EMP.Employee('Дерипаска Олег Владимирович', 'Маркетинг', 'Аналитик', 130000)
>>> ya = EMP.Employee('Мамакин Ярослав Романович', 'Производственный', 'Арбузолитейщик', 131000)
>>> ya.dolzhnost
'Арбузолитейщик'
>>> de.svojstvo = 'Премного благодарны'
>>> de.svojstvo = 'Вы лучший'
>>> de.svojstvo
['Премного благодарны', 'Вы лучший']
>>> de.transfer('Клининговый')
>>> de.otdel
'Клининговый'
>>> ya.give_raise(70000)
Оклад повышен на 70000 рублей, новый оклад: 201000