Turn-in directory : | ex02 |
Files to turn in : | logger.py |
Forbidden functions : | |
Remarks : | n/a |
You are going to learn some more advanced features of Python.
In this exercice, we want you to learn about decorators, and we are not talking about the decoration of your room.
The @log
will write info about the decorated function in a machine.log
file.
import time
from random import randint
class CoffeeMachine():
water_level = 100
@log
def start_machine(self):
if self.water_level > 20:
return True
else:
print("Please add water!")
return False
@log
def boil_water(self):
return "boiling..."
@log
def make_coffee(self):
if self.start_machine():
for _ in range(20):
time.sleep(0.1)
self.water_level -= 1
print(self.boil_water())
print("Coffee is ready!")
@log
def add_water(self, water_level):
time.sleep(randint(1, 5))
self.water_level += water_level
print("Blub blub blub...")
if __name__ == "__main__":
machine = CoffeeMachine()
for i in range(0, 5):
machine.make_coffee()
machine.make_coffee()
machine.add_water(70)
Terminal
boiling...
Coffee is ready!
boiling...
Coffee is ready!
boiling...
Coffee is ready!
boiling...
Coffee is ready!
Please add water!
Please add water!
Blub blub blub...
> cat machine.log
(cmaxime)Running: Start Machine [ exec-time = 0.001 ms ]
(cmaxime)Running: Boil Water [ exec-time = 0.005 ms ]
(cmaxime)Running: Make Coffee [ exec-time = 2.499 s ]
(cmaxime)Running: Start Machine [ exec-time = 0.002 ms ]
(cmaxime)Running: Boil Water [ exec-time = 0.005 ms ]
(cmaxime)Running: Make Coffee [ exec-time = 2.618 s ]
(cmaxime)Running: Start Machine [ exec-time = 0.003 ms ]
(cmaxime)Running: Boil Water [ exec-time = 0.004 ms ]
(cmaxime)Running: Make Coffee [ exec-time = 2.676 s ]
(cmaxime)Running: Start Machine [ exec-time = 0.003 ms ]
(cmaxime)Running: Boil Water [ exec-time = 0.004 ms ]
(cmaxime)Running: Make Coffee [ exec-time = 2.648 s ]
(cmaxime)Running: Start Machine [ exec-time = 0.011 ms ]
(cmaxime)Running: Make Coffee [ exec-time = 0.029 ms ]
(cmaxime)Running: Start Machine [ exec-time = 0.009 ms ]
(cmaxime)Running: Make Coffee [ exec-time = 0.024 ms ]
(cmaxime)Running: Add Water [ exec-time = 5.026 s ]
>