New-style classes and special methods
Terry Reedy
tjreedy at udel.edu
Mon Feb 24 11:07:21 EST 2003
"Alex Martelli" <aleax at aleax.it> wrote in message
news:qhl6a.303192$AA2.11531457 at news2.tin.it...
> Of course, this class is nearly unusable...:
>
> >>> f
> Traceback (most recent call last):
> File "<stdin>", line 1, in ?
> TypeError: <lambda>() takes exactly 1 argument (0 given)
Yes, subverting Python's 'Every object has a printable representation'
feature can be a real PITA:
>>> globals()
{'C': <class __main__.C at 0x007960D0>, 'f': Traceback (most recent
call last):
File "<stdin>", line 1, in ?
TypeError: <lambda>() takes exactly 1 argument (0 given)
I discovered this time bomb when I came back to my interactive
session, an hour after running the experiment with the cracked class,
to do something completely different.
I am tempted to suggest that the feature be made more robust by
wrapping internal calls to __repr__/__str__ with try/except. The
except clause would call the dependable default versions -- and maybe
tack on a bug note.
< C instance at 0xabc with bad __str__>
TJR
More information about the Python-list
mailing list