-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathEmployee.py
43 lines (32 loc) · 1.42 KB
/
Employee.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
class Employee:
def __init__(self, number: int, net_pay: float = 0.0):
if not isinstance(number, int):
raise ValueError('Employee number must be an integer type.')
if not isinstance(net_pay, float):
raise ValueError('Net pay must be a float type.')
self.number = number
self.net_pays = set([round(net_pay, 2)])
def add_net_pay(self, other) -> None:
if not isinstance(other, Employee):
raise ValueError('add_net_pay() can only be called for another Employee')
self.net_pays.update(other.net_pays)
def total_net_pay(self):
return round(sum(x for x in self.net_pays), 2)
def __hash__(self):
return self.number
def __eq__(self, other):
if not isinstance(other, Employee):
raise ValueError('Employee.__eq__() can only be called for another Employee')
return self.number == other.number
def __gt__(self, other):
if not isinstance(other, Employee):
raise ValueError('Employee.__gt__() can only be called for another Employee')
return self.number > other.number
def __lt__(self, other):
if not isinstance(other, Employee):
raise ValueError('Employee.__lt__() can only be called for another Employee')
return self.number < other.number
def __str__(self):
return str(self.number)
def __repr__(self):
return self.__str__()