""" # tag::FUNC_DESCRIPTOR_DEMO[] >>> word = Text('forward') >>> word # <1> Text('forward') >>> word.reverse() # <2> Text('drawrof') >>> Text.reverse(Text('backward')) # <3> Text('drawkcab') >>> type(Text.reverse), type(word.reverse) # <4> (, ) >>> list(map(Text.reverse, ['repaid', (10, 20, 30), Text('stressed')])) # <5> ['diaper', (30, 20, 10), Text('desserts')] >>> Text.reverse.__get__(word) # <6> >>> Text.reverse.__get__(None, Text) # <7> >>> word.reverse # <8> >>> word.reverse.__self__ # <9> Text('forward') >>> word.reverse.__func__ is Text.reverse # <10> True # end::FUNC_DESCRIPTOR_DEMO[] """ # tag::FUNC_DESCRIPTOR_EX[] import collections class Text(collections.UserString): def __repr__(self): return 'Text({!r})'.format(self.data) def reverse(self): return self[::-1] # end::FUNC_DESCRIPTOR_EX[]