On Wed, Dec 20, 2017 at 03:23:16PM -0800, Chris Barker wrote: > On Wed, Dec 20, 2017 at 2:31 AM, Steven D'Aprano <st...@pearwood.info> > wrote:
> > Even when it works, the guarantee is quite weak. For instance, even > > the object type is not preserved: > > > > py> class MyDict(dict): > > ... pass > > ... > > py> d = MyDict() > > py> x = eval(repr(d)) > > py> assert d == x > > py> assert type(d) == type(x) > > Traceback (most recent call last): > > File "<stdin>", line 1, in <module> > > AssertionError > > > > Oh come on! If you subclass, and don't override __repr__ -- you're written > a (very slightly) broken class (OK, a class with a broken __repr__). Why is it broken? Is it documented somewhere that every subclass MUST override __repr__? If there's a bug here, and I'm not sure that there is, the bug is in dict itself, for having a repr which isn't friendly to subclasses. But in practice, why would I care? Obviously sometimes I do care, and for debugging it is often good to have a custom repr for subclasses, but it isn't mandatory or even always useful. Especially since in practice, it isn't that common to round-trip repr though eval (apart from the REPL itself, of course). -- Steve _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com