On Apr 16, 2020, at 11:03, Caleb Donovick <donov...@cs.stanford.edu> wrote:
> 
> Or alternatively MissingMapping (or some other mixin) could define 
> __getitem__ and  require __getitem_impl__ and __missing__.  As this wouldn't 
> require any changes to anything I think it might be the best solution I have 
> proposed.

I think this makes more sense as a decorator (either a class decorator that 
wraps __getitem__, or a method decorator that you apply to __getitem__). A 
mixin just complicated all the multiple inheritance issues. Does it inherit 
from Mapping, or does it expect you to inherit both, and to get the order right 
to satisfy ABCMeta? What about MutableMapping? Would it ever need to coexist 
with other mixins with similar issues? Also, does it try to lift your docstring 
and signature up to the public method, or does it just provide generic ones? 
All of these issues become trivial with a decorator.

Somewhere I have some code for a set of class decorators that help implementing 
mappings and sequences: you provide basic __fooitem__ methods, and it wraps 
them with methods that do all the extra stuff dict, tuple, and list do. IIRC, 
the mutable sequence stuff is the only place where it gets complicated, but 
there may be others I haven’t remembered. I can dig this up if you‘re 
interested. Maybe it’s even worth cleaning up and posting to PyPI, or even 
proposing for somewhere in the stdlib (collections or functools?).

_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/J2LP62RFKLRSFLZWWWYIK4E75KDXOHFX/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to