In [4]: f.myfunc()
Getting 'myfunc()'
File "/home/ab/local/bin/ipython", line 27, in ?
IPython.Shell.start().mainloop()
File "/home/ab/local/pythonlib/IPython/Shell.py", line 84, in mainloop
self.IP.mainloop(banner)
File "/home/ab/local/pythonlib/IPython/iplib.py", line 1575, in mainloop
self.interact(banner)
File "/home/ab/local/pythonlib/IPython/iplib.py", line 1773, in interact
line = self.raw_input(prompt,more)
File "/home/ab/local/pythonlib/IPython/iplib.py", line 2196, in raw_input
lineout = self.prefilter(line,continue_prompt)
File "/home/ab/local/pythonlib/IPython/iplib.py", line 2279, in multiline_prefilter
out.append(self._prefilter(l, continue_prompt))
File "/home/ab/local/pythonlib/IPython/iplib.py", line 2261, in _prefilter
return prefilter.prefilter(line_info, self)
File "/home/ab/local/pythonlib/IPython/prefilter.py", line 149, in prefilter
handler = check(line_info, ip)
File "/home/ab/local/pythonlib/IPython/prefilter.py", line 277, in checkAutocall
oinfo = l_info.ofind(ip) # This can mutate state via getattr
File "/home/ab/local/pythonlib/IPython/prefilter.py", line 72, in ofind
self._oinfo = ip._ofind(self.iFun)
File "/home/ab/local/pythonlib/IPython/Magic.py", line 234, in _ofind
obj = getattr(obj,part)
File "foo.py", line 6, in __getattr__
traceback.print_stack()
myfunc()
Stack-trace showing culprit of __getattr__ call:
In [1]: !cat foo.py
class foo(object):
traceback. print_stack( )
def __getattr__(self, attr):
print 'Getting %r' % attr
import traceback
def myfunc(self):
print 'myfunc()'
In [2]: import foo
In [3]: f = foo.foo()
In [4]: f.myfunc() ab/local/ bin/ipython" , line 27, in ? Shell.start( ).mainloop( ) ab/local/ pythonlib/ IPython/ Shell.py" , line 84, in mainloop IP.mainloop( banner) ab/local/ pythonlib/ IPython/ iplib.py" , line 1575, in mainloop interact( banner) ab/local/ pythonlib/ IPython/ iplib.py" , line 1773, in interact input(prompt, more) ab/local/ pythonlib/ IPython/ iplib.py" , line 2196, in raw_input line,continue_ prompt) ab/local/ pythonlib/ IPython/ iplib.py" , line 2279, in multiline_prefilter append( self._prefilter (l, continue_prompt)) ab/local/ pythonlib/ IPython/ iplib.py" , line 2261, in _prefilter prefilter( line_info, self) ab/local/ pythonlib/ IPython/ prefilter. py", line 149, in prefilter ab/local/ pythonlib/ IPython/ prefilter. py", line 277, in checkAutocall ab/local/ pythonlib/ IPython/ prefilter. py", line 72, in ofind self.iFun) ab/local/ pythonlib/ IPython/ Magic.py" , line 234, in _ofind print_stack( )
Getting 'myfunc()'
File "/home/
IPython.
File "/home/
self.
File "/home/
self.
File "/home/
line = self.raw_
File "/home/
lineout = self.prefilter(
File "/home/
out.
File "/home/
return prefilter.
File "/home/
handler = check(line_info, ip)
File "/home/
oinfo = l_info.ofind(ip) # This can mutate state via getattr
File "/home/
self._oinfo = ip._ofind(
File "/home/
obj = getattr(obj,part)
File "foo.py", line 6, in __getattr__
traceback.
myfunc()
In [5]: f.myfunc ()
myfunc()