The use of dynamic dispatching by Repr.repr1() allows subclasses of Repr to add support for additional built-in object types or to modify the handling of types already supported. This example shows how special support for file objects could be added:
import repr import sys class MyRepr(repr.Repr): def repr_file(self, obj, level): if obj.name in ['<stdin>', '<stdout>', '<stderr>']: return obj.name else: return `obj` aRepr = MyRepr() print aRepr.repr(sys.stdin) # prints '<stdin>'