45 lines
1.3 KiB
Python
45 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.
|
||
|
|
||
|
# tag::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[]
|
||
|
"""
|
||
|
|
||
|
# tag::BLACK_KNIGHT[]
|
||
|
class BlackKnight:
|
||
|
|
||
|
def __init__(self):
|
||
|
self.phrases = [
|
||
|
('an arm', "'Tis but a scratch."),
|
||
|
('another arm', "It's just a flesh wound."),
|
||
|
('a leg', "I'm invincible!"),
|
||
|
('another leg', "All right, we'll call it a draw.")
|
||
|
]
|
||
|
|
||
|
@property
|
||
|
def member(self):
|
||
|
print('next member is:')
|
||
|
return self.phrases[0][0]
|
||
|
|
||
|
@member.deleter
|
||
|
def member(self):
|
||
|
member, text = self.phrases.pop(0)
|
||
|
print(f'BLACK KNIGHT (loses {member}) -- {text}')
|
||
|
# end::BLACK_KNIGHT[]
|