I don&#39;t find myself using autocall much, but I will probably use it a lot more if I ever switch<div>to Python 3 (maybe 2015?), if just for helping me ease out of my `print foo` habit.</div><div><br></div><div>If it causes problems, I certainly wouldn&#39;t mind it being off by default.</div>

<div><br></div><div>-MinRK<br><br><div class="gmail_quote">On Tue, Nov 29, 2011 at 23:07, Fernando Perez <span dir="ltr">&lt;<a href="mailto:fperez.net@gmail.com">fperez.net@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Hi folks,<br>
<br>
over the years, we&#39;ve had a number of bug reports that ultimately boil<br>
down to ipython doing an extra getattr call on objects at the prompt,<br>
such as<br>
<br>
<a href="https://github.com/ipython/ipython/issues/988" target="_blank">https://github.com/ipython/ipython/issues/988</a><br>
<a href="https://github.com/ipython/ipython/issues/851" target="_blank">https://github.com/ipython/ipython/issues/851</a><br>
<br>
While this may appear odd, people do have code out there that mutates<br>
the state of objects on simple getattr calls, and so *any*<br>
introspection on such objects, no matter how carefully done, mutates<br>
them.  The last example comes from Traits code, which is famous for<br>
having complex semantics attached to attribute access.<br>
<br>
Since this is a recurring problem, I&#39;m trying to decide whether the<br>
convenience of autocall being on by default is worth against the<br>
occasional surprise of situations like these.<br>
<br>
Obviously we&#39;d leave the functionality of autocall as-is, and people<br>
could still enable it if they wanted to.  I&#39;m only talking about<br>
whether it should be completely off by default.  The reason why<br>
defaults matter a lot is that the vast majority of users never ever<br>
change them (I&#39;ve seen countless long-term users with the wrong colors<br>
for a light bacgkround, the one default we can&#39;t pick for them and<br>
that leads to unreadable tracebacks, yet people live with it for<br>
years).  So it&#39;s up to us to give people defaults that lead to the<br>
best experience possible.<br>
<br>
I personally had always fallen on the side of saying that autocall is<br>
a big convenience of ipython, and that code that mutates on simple<br>
attribute access is special enough that we shouldn&#39;t sacrifice that<br>
convenience for most users to accommodate such a special case.<br>
<br>
But I&#39;m not sure anymore if that&#39;s the right balance, given the<br>
recurring nature of these reports (the above are just the two most<br>
recent ones, I&#39;ve answered this question in one form or another<br>
probably 20 times or more over the years).<br>
<br>
So I&#39;d like to hear some feedback, as we&#39;re getting ready to put 0.12<br>
out the door soon...<br>
<br>
Cheers,<br>
<br>
f<br>
_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
</blockquote></div><br></div>