I would like to have autocompletion in IPython (Jupyter qtconsole or console) for the following case:
I create a class
class MyClass(object):
def __init__(self, a, b):
self.a = a
self.b = b
and put several objects of this class into a list or dict
my_list = []
my_list.append(MyClass(2,3))
my_list.append(MyClass(9,2))
my_list.append(MyClass(8,4))
Now if I do
my_list[0].TAB
autocompletion is not working.
I would like to see a list of my class attributes and methods. Am I missing something or is this just not support in IPython?
Appreciate your help ...
You can execute that in a cell of your Jupyter Notebook:
%config IPCompleter.greedy=True
Which gives (in an ipython/jupyter console, but same in a notebook)
In [10]: my_list[0].<TAB>
my_list[0].a my_list[0].b
To have it permanently, just edit your file ipython_config.py
so it looks like this (Commented lines are already present and unmodified, around lines 506-514):
#------------------------------------------------------------------------------
# Completer configuration
#------------------------------------------------------------------------------
# Activate greedy completion
#
# This will enable completion on elements of lists, results of function calls,
# etc., but can be unsafe because the code is actually evaluated on TAB.
c.Completer.greedy = True # <-- uncomment this line and set it to True
If you don't have ipython_config.py
in ~/.ipython/profile_default/
you can create one with:
ipython profile create