-
Notifications
You must be signed in to change notification settings - Fork 7
/
6_boolean_flag_before.py
46 lines (36 loc) · 1.27 KB
/
6_boolean_flag_before.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
from dataclasses import dataclass
from enum import StrEnum, auto
FIXED_VACATION_DAYS_PAYOUT = 5
class Role(StrEnum):
PRESIDENT = auto()
VICEPRESIDENT = auto()
MANAGER = auto()
LEAD = auto()
ENGINEER = auto()
INTERN = auto()
@dataclass
class Employee:
name: str
role: Role
vacation_days: int = 25
def take_a_holiday(self, payout: bool, nr_days: int = 1) -> None:
if payout:
if self.vacation_days < FIXED_VACATION_DAYS_PAYOUT:
raise ValueError(
f"You don't have enough holidays left over for a payout.\
Remaining holidays: {self.vacation_days}."
)
self.vacation_days -= FIXED_VACATION_DAYS_PAYOUT
print(f"Paying out a holiday. Holidays left: {self.vacation_days}")
else:
if self.vacation_days < nr_days:
raise ValueError(
"You don't have any holidays left. Now back to work, you!"
)
self.vacation_days -= nr_days
print("Have fun on your holiday. Don't forget to check your emails!")
def main() -> None:
employee = Employee(name="John Doe", role=Role.ENGINEER)
employee.take_a_holiday(True)
if __name__ == "__main__":
main()