6

对于以下情况,我想在 IPython(Jupyter qtconsole 或控制台)中自动完成:

我创建了一个类

class MyClass(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b

并将此类的几个对象放入列表或字典中

my_list = []
my_list.append(MyClass(2,3))
my_list.append(MyClass(9,2))
my_list.append(MyClass(8,4))

现在如果我这样做

my_list[0].TAB

自动完成不起作用。

我想查看我的类属性和方法的列表。我是否遗漏了什么,或者这只是 IPython 不支持?

感谢你的帮助 ...

4

1 回答 1

11

您可以在 Jupyter Notebook 的单元格中执行该操作:

%config IPCompleter.greedy=True

这给出了(在 ipython/jupyter 控制台中,但在笔记本中相同)

In [10]: my_list[0].<TAB>
my_list[0].a  my_list[0].b  

要永久拥有它,只需编辑您的文件ipython_config.py,使其看起来像这样(注释行已经存在且未修改,大约在第 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

如果你没有ipython_config.py~/.ipython/profile_default/你可以创建一个:

ipython profile create
于 2015-11-03T12:51:16.537 回答