-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathListeners.py
More file actions
38 lines (30 loc) · 1.04 KB
/
Copy pathListeners.py
File metadata and controls
38 lines (30 loc) · 1.04 KB
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
import abc
class EventListener(abc.ABC):
@abc.abstractmethod
def reserve_reached(self,sender):
pass
class Reservoir:
def __init__(self):
self.current_state = 100
self.reserve_limit = 50
self.listeners = []
def add_listener(self, listener):
self.listeners.append(listener)
def remove_listener(self, listener):
self.listeners.remove(listener)
def distribute_event(self):
for listener in self.listeners:
if isinstance(listener, EventListener):
listener.reserve_reached(self)
def consume_fuel(self):
print(f"Fuel consumed. {self.current_state} liters remaining")
self.current_state -= 1
if self.current_state < self.reserve_limit:
self.distribute_event()
class MyListener(EventListener):
def reserve_reached(self,sender):
print("Warning, Low fuel level")
res = Reservoir()
res.add_listener(MyListener())
for i in range(0,100):
res.consume_fuel()