-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathworker.py
More file actions
88 lines (66 loc) · 3.19 KB
/
Copy pathworker.py
File metadata and controls
88 lines (66 loc) · 3.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from datetime import datetime
from typing import List
class WORKER:
"""Класс для представления работника организации"""
def __init__(self, surname: str = "", initials: str = "",
position: str = "", salary: float = 0.0,
hire_year: int = 2020):
"""Конструктор по умолчанию и с параметрами"""
self.__surname = surname # фамилия
self.__initials = initials # инициалы
self.__position = position # должность
self.__salary = salary # зарплата
self.__hire_year = hire_year # год поступления на работу
def __del__(self):
"""Деструктор"""
print(f"Объект WORKER {self.__surname} удалён")
# Методы изменения полей (сеттеры)
def set_surname(self, surname: str):
self.__surname = surname
def set_initials(self, initials: str):
self.__initials = initials
def set_position(self, position: str):
self.__position = position
def set_salary(self, salary: float):
if salary >= 0:
self.__salary = salary
def set_hire_year(self, hire_year: int):
current_year = datetime.now().year
if 1950 <= hire_year <= current_year:
self.__hire_year = hire_year
# Методы отображения полей (геттеры)
def get_surname(self) -> str:
return self.__surname
def get_initials(self) -> str:
return self.__initials
def get_position(self) -> str:
return self.__position
def get_salary(self) -> float:
return self.__salary
def get_hire_year(self) -> int:
return self.__hire_year
def get_experience(self) -> int:
"""Расчёт стажа работы на текущий год"""
return datetime.now().year - self.__hire_year
def display(self) -> str:
"""Форматированный вывод информации о работнике"""
return (f"{self.__surname} {self.__initials} | "
f"Должность: {self.__position} | "
f"Зарплата: {self.__salary:.2f} ₽ | "
f"Стаж: {self.get_experience()} лет")
class WorkerManager:
"""Класс для управления списком работников"""
def __init__(self):
self.__workers: List[WORKER] = []
def add_worker(self, worker: WORKER):
self.__workers.append(worker)
def find_by_experience(self, min_experience: int) -> List[WORKER]:
"""Поиск работников со стажем больше заданного"""
return [w for w in self.__workers if w.get_experience() > min_experience]
def display_all(self):
if not self.__workers:
print("Список работников пуст.")
return
print("\nСписок всех работников:")
for i, worker in enumerate(self.__workers, 1):
print(f"{i}. {worker.display()}")