-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathteam.py
88 lines (70 loc) · 3.28 KB
/
team.py
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 typing import Set
from .employee import Employee, Manager
from .exception import NoSuchMemberError
class Team:
"""
Класс - команда.
У каждой команды есть менеджер, название и участники.
Возможности:
- добавление участников
- удаление участника из команды
- просмотр базовой информации об участниках
- получение списка участников
"""
name: str
manager: Manager
__members: Set[Employee]
def __init__(self, name: str, manager: Manager):
"""
Задача:
Реализовать конструктор класса.
Конструктор должен присвоить значения публичным атрибутам
и инициализировать контейнер `__members`
"""
# пиши свой код здесь
if type(manager) != Manager or type(name) != str:
raise TypeError
self.name = name
self.manager = manager
self.__members = set()
def add_member(self, member: Employee) -> None:
"""
Задача: реализовать метод добавления участника в команду.
Добавить можно только работника.
"""
# пиши свой код здесь
if not isinstance(member, Employee):
raise TypeError
self.__members.add(member)
def remove_member(self, member: Employee) -> None:
"""
Задача: реализовать метод удаления участника из команды.
Если в команде нет такого участника поднимается исключение `NoSuchMemberError`
"""
# пиши свой код здесь
if not isinstance(member, Employee):
raise TypeError
if member in self.__members:
self.__members.remove(member)
else:
raise NoSuchMemberError(self.name, member)
def get_members(self) -> Set[Employee]:
"""
Задача: реализовать метод возвращения списка участков команды та,
чтобы из вне нельзя было поменять список участников внутри класса
"""
# пиши свой код здесь
set_copy = self.__members.copy()
return set_copy
def __str__(self):
return f"team: {self.name} manager: {self.manager.name} number of members: {len(self.__members)}"
def show(self) -> None:
"""
DO NOT EDIT!
Данный метод нельзя редактировать!
Метод показывает информацию о команде в формате:
`'team: {team_name} manager: {manager_name} number of members: {members_count)}'`
Задача: доработать класс таким образом, чтобы метод выполнял свою функцию, не меняя содержимое
этого метода
"""
print(self)