-
Notifications
You must be signed in to change notification settings - Fork 0
/
Person.py
137 lines (115 loc) · 4.18 KB
/
Person.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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# 2019-2020 Programação 2 (LTI)
# Grupo 12
# 55373 José Almeida
# 55371 Augusto Gouveia
from copy import deepcopy
class Person:
"""
Creates object representing a person.
Requires: name, idnb and immune are strings representing the person's
name, ID number and immunity status, respectively. direct is a list
containing the ID numbers of people this person is in direct contact with.
age is an int representing the person's age and fitness is an int representing
the person's fitness level, from 1 to 5.
Ensures: Person object representing the person and it's attributes.
"""
def __init__(self, name=None, idnb=None, age=None, direct=None, fitness=None, immune=None):
if direct is None:
direct = []
self._name = name
self._idnb = idnb
self._age = age
self._direct = deepcopy(direct)
self._fitness = fitness
if immune == "Yes":
self._immune = True
else:
self._immune = False
# Setters
def setName(self, newName):
"""
Allows for setting a new name.
Requires: newName is a string representing the desired name.
Ensures: self._name = newName.
"""
self._name = newName
def setIdNb(self, newIdNb):
"""
Allows for setting a new ID number.
Requires: newIdNb is a string representing the desired ID number.
Ensures: self._idnb = newIdNb.
"""
self._idnb = newIdNb
def setAge(self, newAge):
"""
Allows for setting a new age.
Requires: newAge is an int representing the age.
Ensures: self._age = newAge.
"""
self._age = newAge
def setDirect(self, newDirect):
"""
Allows for setting a new direct list.
Requires: newDirect is a list representing the person's close contacts.
Ensures: self._direct = newDirect.
"""
self._direct = newDirect
def setFitness(self, newFitness):
"""
Allows for setting a new fitness level.
Requires: newFitness is an int representing the fitness leve.
Ensures: self._fitness = newFitness.
"""
self._fitness = newFitness
def setImmune(self, newImmune):
"""
Allows for setting a new immunity status.
Requires: newImmune is an boolean value representing the immunity status.
Ensures: self._immune = newImmune.
"""
self._immune = newImmune
# Getters
def getName(self):
"""
Used to obtain name attribute of Person.
Ensures: a string representing the name of the person.
"""
return self._name
def getIdNb(self):
"""
Used to obtain idnb attribute of Person.
Ensures: a string representing the ID number of the person.
"""
return self._idnb
def getAge(self):
"""
Used to obtain age attribute of Person.
Ensures: an int representing the age of the person.
"""
return self._age
def getDirect(self):
"""
Used to obtain direct attribute of Person.
Ensures: a list with the ID numbers of everyone in direct
contact with the person.
"""
return deepcopy(self._direct)
def getFitness(self):
"""
Used to obtain fitness attribute of Person.
Ensures: an int representing the fitness level of the person.
"""
return self._fitness
def getImmune(self):
"""
Used to obtain immune attribute of Person.
Ensures: a string representing the immunity status of the person.
"""
return self._immune
def __str__(self):
"""
Printable representation of a Person object.
Ensures: string including all of the person's attributes in an easy-to-read way.
"""
return "{}, {}, {}, <{}>, {}, {}".format(str(self._name), str(self._idnb), str(self._age),
str(self._direct).replace("'","").replace("[","").replace("]",""), str(self._fitness), str(self._immune))