FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
python-patterns/state.py at master · Pythoning/python-patterns · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
Pythoning
/
python-patterns
Public
forked from
faif/python-patterns
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
python-patterns
/
state.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
63 lines (46 loc) · 1.82 KB
Breadcrumbs
python-patterns
/
state.py
Copy path
File metadata and controls
63 lines (46 loc) · 1.82 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
"""Implementation of the state pattern"""
'''http://ginstrom.com/scribbles/2007/10/08/design-patterns-python-style/'''
class
State
(
object
):
"""Base state. This is to share functionality"""
def
scan
(
self
):
"""Scan the dial to the next station"""
self
.
pos
+=
1
if
self
.
pos
==
len
(
self
.
stations
):
self
.
pos
=
0
print
(
"Scanning... Station is"
,
self
.
stations
[
self
.
pos
],
self
.
name
)
class
AmState
(
State
):
def
__init__
(
self
,
radio
):
self
.
radio
=
radio
self
.
stations
=
[
"1250"
,
"1380"
,
"1510"
]
self
.
pos
=
0
self
.
name
=
"AM"
def
toggle_amfm
(
self
):
print
(
"Switching to FM"
)
self
.
radio
.
state
=
self
.
radio
.
fmstate
class
FmState
(
State
):
def
__init__
(
self
,
radio
):
self
.
radio
=
radio
self
.
stations
=
[
"81.3"
,
"89.1"
,
"103.9"
]
self
.
pos
=
0
self
.
name
=
"FM"
def
toggle_amfm
(
self
):
print
(
"Switching to AM"
)
self
.
radio
.
state
=
self
.
radio
.
amstate
class
Radio
(
object
):
"""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
.
amstate
=
AmState
(
self
)
self
.
fmstate
=
FmState
(
self
)
self
.
state
=
self
.
amstate
def
toggle_amfm
(
self
):
self
.
state
.
toggle_amfm
()
def
scan
(
self
):
self
.
state
.
scan
()
# Test our radio out
if
__name__
==
'__main__'
:
radio
=
Radio
()
actions
=
[
radio
.
scan
]
*
2
+
[
radio
.
toggle_amfm
]
+
[
radio
.
scan
]
*
2
actions
=
actions
*
2
for
action
in
actions
:
action
()
Back
|
FazBrowse Home
|
New Git URL