Object presentation with pprint
In my last post, I discovered that there are all sorts of awesome things you can do to format strings for presentation in a Python program. In this episode, I learn that it's possible to do the same thing with all Python objects using
Let's crack it open and get to some pretty-printing!
import pprint pp = pprint.PrettyPrinter(indent=4, width=60)
Okay, I've implemented a
PrettyPrinter object that expects to indent things at the four-space mark and each line can only be 60 characters long. Cool.
team = ['We', 'live', 'in', 'cities', 'you\'ll', 'never', 'see', 'on', 'screen', 'not', 'very', 'pretty', 'but', 'we', 'sure', 'know', 'how', 'to', 'run', 'things'] # yes, that is a list of words in the chorus of Lorde's "Team" pp.pprint(team)
Okay, awesome. I now print everything on its own line with a slight indentation.
What happens if I throw a custom object at it?
class Dog: def __init__(self, name, owner): self.name = name self.owner = owner my_dog = Dog('Rufus', 'Joe') pp.pprint(my_dog) # <__main__.Dog instance at 0x1007ebc20>
Oh, that's disappointing. I was hoping I'd get a nifty way of doing this without having to define a custom
repr() method on
Dog. Ah well.
pprint does some stuff awesome, and some stuff... not as awesome. Onward!