49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
"""
|
|
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
|