On Fri, Sep 11, 2015 at 1:48 AM, Raymond Hettinger <raymond.hettin...@gmail.com> wrote: > >> On Sep 10, 2015, at 3:23 AM, Maciej Fijalkowski <fij...@gmail.com> wrote: >> >> I would like to know what are the semantics if you subclass something >> from itertools (e.g. islice). >> >> Right now it's allowed and people do it, which is why the >> documentation is incorrect. It states "equivalent to: a function-or a >> generator", but you can't subclass whatever it is equivalent to, which >> is why in PyPy we're unable to make it work in pure python. >> >> I would like some clarification on that. > > The docs should say "roughly equivalent to" not "exactly equivalent to". > The intended purpose of the examples in the itertools docs is to use > pure python code to help people better understand each tool. It is not > is intended to dictate that tool x is a generator or is a function. > > The intended semantics are that the itertools are classes (not functions > and not generators). They are intended to be sub-classable (that is > why they have Py_TPFLAGS_BASETYPE defined).
Ok, so what's completely missing from the documentation is what *are* the semantics of subclasses of those classes? Can you override any magic methods? Can you override next (which is or isn't a magic method depending how you look)? Etc. The documentation on this is completely missing and it's left guessing with "whatever cpython happens to be doing". _______________________________________________ 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