[Python-Dev] pprint(iterator)

Eric Smith eric at trueblade.com
Fri Jan 30 13:33:19 CET 2009


Steven D'Aprano wrote:
> Eric Smith wrote:
>> Terry Reedy wrote:
>>> Ron Adam wrote:
>>>>
>>>>
>>>> Steven D'Aprano wrote:
>>>>> Michael Foord wrote:
>>>>>
>>>>>> Don't we have a pretty-print API - and isn't it spelled __str__ ?
>>>>>
>>>>> Not really. If it were as simple as calling str(obj), there would 
>>>>> be no need for the pprint module.
>>>>
>>>> I agree.  And when I want to use pprint, there are usually 
>>>> additional output formatting requirements I need that isn't a "one 
>>>> size fits all" type of problem.
>>
>> I don't see how you can have a standard interface (like __pprint__), 
>> and have additional, per-object formatting parameters. 
> 
> I don't see how you can't. Other standard methods take variable 
> arguments: __init__, __new__, __call__ come to mind.

Those are different, since they're called on known specific objects. 
Having params to a generic __pprint__ method would be more like having 
params to __str__ or __repr__. If you know enough about the object to 
know which parameters to pass to its pretty-print function, then just 
call a normal method on the object to do the pprint'ing. But, for 
example, assuming pprint for a list is recursive (as it is for repr), 
how would you pass the arguments around?

>  > But that's beside the
>> point, I don't like __pprint__ in any event. Too special.
> 
> I'm not sure what you mean by "too special". It's no more special than 
> any other special method. Do you mean the use-case is not common enough? 
> I would find this useful. Whether enough people would find it useful 
> enough to add yet another special method is an open question.

Bad choice of words on my part. I meant "too special case" for such 
machinery. That is, the use case isn't common enough.


More information about the Python-Dev mailing list