2009/1/29 Oleg Broytmann <[email protected]>:
> On Thu, Jan 29, 2009 at 08:06:18AM -0800, Aahz wrote:
>> On Thu, Jan 29, 2009, Michael Foord wrote:
>> > Don't we have a pretty-print API - and isn't it spelled __str__ ?
>>
>> In theory, yes. In practice, we wouldn't be having this discussion if
>> that really worked. But it probably would make sense to see how far
>> using __str__ can take us -- AFAICT enumobject.c doesn't define __str__
>> (although I may be missing something, I don't know Python at the C level
>> very well).
>
> Container objects (tuples/lists/dicts/sets) don't define __str__.
> Is __pprint__ an attempt to redefine __str__?
Anyone feel like raising the topic of generic functions again? :-)
More practically, the undocumented simplegeneric decorator in pkgutil
could be used:
Python 2.6.1 (r261:67517, Dec 4 2008, 16:51:00) [MSC v.1500 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pkgutil import simplegeneric
>>> @simplegeneric
... def f(obj):
... return "Object of type %s" % type(obj)
...
>>> def str_f(s):
... return "String: " + s
...
>>> f.register(str, str_f)
<function str_f at 0x00B461F0>
>>> f("Test")
'String: Test'
>>> f(1)
"Object of type <type 'int'>"
>>>
To me, that seems better than inventing yet another special method.
Paul.
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com