-
Notifications
You must be signed in to change notification settings - Fork 0
/
StateDP2.py
89 lines (56 loc) · 1.87 KB
/
StateDP2.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
"""State class: Base State class"""
class State:
"""Base state. This is to share functionality"""
def scan(self):
"""Scan the dial to the next station"""
self.pos += 1
"""check for the last station"""
if self.pos == len(self.stations):
self.pos = 0
print("Visiting... Station is {} {}".format(self.stations[self.pos], self.name))
"""Separate Class for AM state of the radio"""
class AmState(State):
"""constructor for AM state class"""
def __init__(self, radio):
self.radio = radio
self.stations = ["1250", "1380", "1510"]
self.pos = 0
self.name = "AM"
"""method for toggling the state"""
def toggle_amfm(self):
print("Switching to FM")
self.radio.state = self.radio.fmstate
"""Separate class for FM state"""
class FmState(State):
"""Constriuctor for FM state"""
def __init__(self, radio):
self.radio = radio
self.stations = ["81.3", "89.1", "103.9"]
self.pos = 0
self.name = "FM"
"""method for toggling the state"""
def toggle_amfm(self):
print("Switching to AM")
self.radio.state = self.radio.amstate
"""Dedicated class Radio"""
class Radio:
"""A radio. It has a scan button, and an AM / FM toggle switch."""
def __init__(self):
"""We have an AM state and an FM state"""
self.fmstate = FmState(self)
self.amstate = AmState(self)
self.state = self.fmstate
"""method to toggle the switch"""
def toggle_amfm(self):
self.state.toggle_amfm()
"""method to scan """
def scan(self):
self.state.scan()
""" main method """
if __name__ == "__main__":
""" create radio object"""
radio = Radio()
actions = [radio.scan] * 3 + [radio.toggle_amfm] + [radio.scan] * 3
actions *= 2
for action in actions:
action()