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