On Mon, Feb 8, 2016 at 3:36 PM, Mahmoud Hashemi
The motivation is that there are many cases where producing the full, round-trippable repr is possible, but would take up significant resources or be too huge to be useful for human consumption.
numpy as realized this, and produced a __repr__ (and __str__) that truncates: In [*26*]: len(arr) Out[*26*]: 100000 In [*27*]: repr(arr) Out[*27*]: 'array([ 0.00000000e+00, 1.00001000e-02, 2.00002000e-02, ...,\n 9.99980000e+02, 9.99990000e+02, 1.00000000e+03])' I"m not sure that a full-sized repr is ever useful, so this seems fine to me. I wonder how often anyone actually counts on eval(repr(obj)) == obj ? In short, I don't see that this would be all that useful. -CHB
The built-in [reprlib module][1] certainly shows there's an interest for many built-in types, and I think arguably that same functionality is desirable for user types.
As mentioned in the subject a possible API could be:
class ValueObject(object): def __init__(self, content): self.content = content
def __repr__(self): return '%s(%r)' % (self.__class__.__name__, self.content)
def __short_repr__(self, size=None, depth=None): # TODO: should interpretation of size/depth be casual or strict? if size and len(self.content) > size: short_content = self.content[:size] + '...' else: pass # TODO: could just return normal repr possibly return '<%s content=%r)' % (self.__class__.__name__, short_content)
Without something like this, there's no way to ask an object if it's repr is of manageable length, or how its repr could be meaningfully shortened. Usually I just chop out the middle and add an ellipsis, but as for the time spent generating that middle, I'll never get those cycles back.
Anyways, thanks for your attention, and happy Monday to all!
Mahmoud https://github.com/mahmoud https://twitter.com/mhashemi http://sedimental.org
[1]: https://docs.python.org/2/library/functions.html#func-repr [2]: https://docs.python.org/3.4/library/reprlib.html
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/
-- Christopher Barker, Ph.D. Oceanographer Emergency Response Division NOAA/NOS/OR&R (206) 526-6959 voice 7600 Sand Point Way NE (206) 526-6329 fax Seattle, WA 98115 (206) 526-6317 main reception Chris.Barker@noaa.gov