2015-11-03 25 views
6

的字典,我想在IPython中(Jupyter qtconsole或控制檯)下列情況下自動完成:IPython的自動完成的列表或對象

我創建一個類

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中不支持?

感謝您的幫助......

回答

10

您可以執行在Jupyter筆記本電腦的電池:

%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 
+0

THX很多關於這一點。完美的作品。該選項仍然在'ipython_config.py'中,您很可能會在這裏找到'〜/ .ipython/profile_default/ipython_config.py'。如果它不存在,你可以用'ipython profile create'創建它。自[The Big Split](http://blog.jupyter.org/2015/04/15/the-big-split/)IPython不再支持配置文件。但是,默認配置文件仍然可以更改。 – fred

+0

@fred,啊,你對'ipython_profile'是對的,我只是在看另一個配置文件,這是爲什麼它不工作。謝謝,我會相應地編輯。 – jrjc