<br><br><div><span class="gmail_quote">On 3/6/07, <b class="gmail_sendername">Ka-Ping Yee</b> &lt;<a href="mailto:python@zesty.ca">python@zesty.ca</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Tue, 6 Mar 2007, Neil Schemenauer wrote:<br>&gt; The argument that all &quot;protocol&quot; methods should have double<br>&gt; underscore names seems to be pretty weak too.&nbsp;&nbsp;It&#39;s only an appeal<br>&gt; for consistency, I think.&nbsp;&nbsp;We don&#39;t suggest that file-like objects
<br>&gt; should implement __read__() instead of read(), for example.<br><br>There is a convention and it is applied quite consistently:<br><br>&nbsp;&nbsp;&nbsp;&nbsp;Double-underscores are for methods implicitly invoked<br>&nbsp;&nbsp;&nbsp;&nbsp;by a language construct.
</blockquote><div><br>I believe you misinterpret the convention. Rather, as I see it, it is:<br>&nbsp;<br></div>&nbsp;&nbsp;&nbsp; Double-underscores are for methods implicitly invoked<br>&nbsp;&nbsp;&nbsp;&nbsp;by a language construct, and should not be called
<br>&nbsp;&nbsp;&nbsp; directly on foreign objects.<br><br>(So perhaps it&#39;s not much of a convention, if we can&#39;t agree on it :) The __*__ methods can be seen as a private API. &#39;next&#39; is not part of it. I see no problem what so ever with the interpreter calling a non-underscored function. I do not understand why this is a problem.
<br><br>I&#39;m -1 on the change. I would be -0 (*maybe* +0) if I thought we had a chance in hell of doing this migration gracefully, but we don&#39;t. The translator can&#39;t really handle all the cornercases we currently have. The best we can do is *add* a __next__ method to classes that have a next method but no __next__ method, and I simply do not think that&#39;s worth it. I am not convinced there is an *actual problem* we are solving, other than that some people are confused about the current situation. Other people would be confused if it was different, so I do not subscribe to the validity of that argument. The single reason I like the builtin next() is the two-argument version, which is quite similar to the two-argument iter(). I would prefer adding it *without* renaming .next to .__next__.
<br></div><br>-- <br>Thomas Wouters &lt;<a href="mailto:thomas@python.org">thomas@python.org</a>&gt;<br><br>Hi! I&#39;m a .signature virus! copy me into your .signature file to help me spread!