[Python-3000] PEP: rename it.next() to it.__next__(), add a next() built-in
Greg Falcon
veloso at verylowsodium.com
Tue Mar 6 03:52:27 CET 2007
On 3/5/07, Ka-Ping Yee <python at zesty.ca> wrote:
> On Tue, 6 Mar 2007, Neil Schemenauer wrote:
> > We don't suggest that file-like objects
> > should implement __read__() instead of read(), for example.
>
> There is a convention and it is applied quite consistently:
>
> Double-underscores are for methods implicitly invoked
> by a language construct.
>
> In fact, your example was specifically anticipated and addressed in
> the PEP draft I posted here. file.read() is not invoked by a language
> construct. When file.read() gets called, it is because the calling
> code has an explicit call to read() in it, not because the standard
> semantics of some piece of Python syntax require it to be invoked.
I agree that file.read() is a different beast than iter.next().
However, file.write() is a counterexample to your argument here. It
gets called by Python syntax, and yet doesn't (and shouldn't) have
double underscores.
>>> print >> object(), "foo"
Traceback (most recent call last):
...
AttributeError: 'object' object has no attribute 'write'
Greg F
More information about the Python-3000
mailing list