On Thu, May 14, 2015 at 11:53 PM, Nathaniel Smith <n...@pobox.com> wrote: > On Thu, May 14, 2015 at 9:29 PM, Guido van Rossum <gu...@python.org> wrote: >> I expect you can make something that behaves like list by defining __mul__ >> and __rmul__ and returning NotImplemented. > > Hmm, it's fairly tricky, and part of the trick is that you can never > return NotImplemented (because you have to pretty much take over and > entirely replace the normal dispatch rules inside __mul__ and > __rmul__), but see attached for something I think should work. > > So I guess this is just how Python's list, tuple, etc. work, and PyPy > and friends need to match...
For the record, it looks like PyPy does already have a hack to implement this -- they do it by having a hidden flag on the built-in sequence types which the implementations of '*' and '+' check for, and if it's found it triggers a different rule for dispatching to the __op__ methods: https://bitbucket.org/pypy/pypy/src/a1a494787f4112e42f50c6583e0fea18db3fb4fa/pypy/objspace/descroperation.py?at=default#cl-692 -- Nathaniel J. Smith -- http://vorpus.org _______________________________________________ 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