2011-03-15 128 views
18

當我使用第三方升 ibrary如boto,PyCharm似乎能夠自動完成相當不錯如何讓PyCharm在方法中自動完成代碼?

enter image description here

然而,當我確定自己的功能,自動完成在該功能內部發生故障。我明白爲什麼,因爲我不能給函數提供任何關於它的參數的類型信息,所以它不能猜測如何自動完成。有沒有解決這個問題的方法?

編輯

我嘗試使用文檔字符串(對於Python 2),但仍沒有自動完成

def delete_oldest_backups(conn, backups_to_keep, backup_description): 
    """ 
    delete_oldest_backups(EC2Connection, int, string) 
    """ 

(也試過的boto.ec2.connection.EC2Connection而不是僅僅EC2Connection

+0

[Pydev Code Completion for everything]的可能重複(http://stackoverflow.com/questions/6218778/pydev-code-completion-for-everything) – Jonathan 2013-07-23 10:32:47

回答

5

你可以使用Python 3參數和返回值註釋指定關於函數​​參數的類型信息。如果您使用的是Python 2,則還可以在函數的文檔字符串中指定信息。 PyCharm瞭解在標準庫中使用二進制模塊的文檔字符串格式,例如:

""" 
foo(int, string) -> list 

Returns the list of something 
""" 
+1

我試過了(請參閱已編輯的問題),但仍然沒有自動-完成。 – ripper234 2011-03-15 13:37:48

+0

我naither工作:高清get_instance_by_name(連接名稱): 「」「 get_instance_by_name(連接名稱) - > boto.ec2.instance 返回實例與指定名稱 對象‘’」和我沒有autocmpliton可用,例如對象 – 2011-12-28 13:50:15

1

爲了PyCharm識別對象的實例,並檢索其所有的方法,我們必須使用下面的語句。但我認爲這是浪費編程和運行時間的可怕方式。

assert isinstance(instanceX, ClassOfInstanceX) 
instanceX.{#list of method/properties appears} 

或者,您也可以使用類名將每次調用方法或屬性時調用它並將實例傳遞給self參數。但是,這是太冗長,我喜歡,尤其對於嵌套類

ClassOfInstanceX.{#list of method/properties appears} 
    # then you will have... 
ClassOfInstance.method(instanceX, args...) 
1

您可以通過pyCharm「包管理器」安裝該庫。

進入設置 - >項目翻譯 - > Python解釋

Package list

而且在包列表中,單擊安裝和搜索你要安裝的庫

Install package

安裝完成後,編輯器將提供自動完成功能。

Autocomple inside function

希望這是你在找什麼。