updated from Atlas
This commit is contained in:
48
19-dyn-attr-prop/blackknight.py
Normal file
48
19-dyn-attr-prop/blackknight.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""
|
||||
This class is inspired by the Black Knight scene in the movie
|
||||
"Monty Python and the Holy Grail", where King Arthur fights the
|
||||
Black Knight, slicing off his arms and legs, but the knight
|
||||
refuses to concede defeat.
|
||||
|
||||
# BEGIN BLACK_KNIGHT_DEMO
|
||||
>>> knight = BlackKnight()
|
||||
>>> knight.member
|
||||
next member is:
|
||||
'an arm'
|
||||
>>> del knight.member
|
||||
BLACK KNIGHT (loses an arm)
|
||||
-- 'Tis but a scratch.
|
||||
>>> del knight.member
|
||||
BLACK KNIGHT (loses another arm)
|
||||
-- It's just a flesh wound.
|
||||
>>> del knight.member
|
||||
BLACK KNIGHT (loses a leg)
|
||||
-- I'm invincible!
|
||||
>>> del knight.member
|
||||
BLACK KNIGHT (loses another leg)
|
||||
-- All right, we'll call it a draw.
|
||||
|
||||
# END BLACK_KNIGHT_DEMO
|
||||
"""
|
||||
|
||||
# BEGIN BLACK_KNIGHT
|
||||
class BlackKnight:
|
||||
|
||||
def __init__(self):
|
||||
self.members = ['an arm', 'another arm',
|
||||
'a leg', 'another leg']
|
||||
self.phrases = ["'Tis but a scratch.",
|
||||
"It's just a flesh wound.",
|
||||
"I'm invincible!",
|
||||
"All right, we'll call it a draw."]
|
||||
|
||||
@property
|
||||
def member(self):
|
||||
print('next member is:')
|
||||
return self.members[0]
|
||||
|
||||
@member.deleter
|
||||
def member(self):
|
||||
text = 'BLACK KNIGHT (loses {})\n-- {}'
|
||||
print(text.format(self.members.pop(0), self.phrases.pop(0)))
|
||||
# END BLACK_KNIGHT
|
||||
Reference in New Issue
Block a user