2012-01-27 45 views
5

我最近拿起了PyCharm,我習慣了Wing的一個功能,在這裏你可以告訴IDE什麼類是一個特定的標識符(變量,屬性,等等)。例如:有沒有辦法明確告訴PyCharm屬性是什麼類的一個實例?

my_object = SomeClass() 
assert isinstance(my_object.my_attribute, SomeOtherClass) 

在這一點上,永確切地知道my_object.my_attribute是什麼即使它不能以其他方式從源代碼分析看着辦吧。

我正在尋找PyCharm中的類似功能。我知道一個對象的特定屬性是什麼,但是PyCharm沒有,所以我怎麼告訴它,所以它可以給我方便的完成?

相關問題:我也確實看到了類似的問題,How can I tell PyCharm what type a parameter is expected to be?,但它不包括屬性,只是參數。

回答

7

實際上,PyCharm也理解'assert isinstance'語法,但僅限於非限定參考。我提起的一個問題來支持這個合格的引用,以及:

http://youtrack.jetbrains.net/issue/PY-5614

在當前版本中,您可以通過訪問SomeClass的聲明並添加epydoc的或獅身人面像文檔字符串指定my_attribute類型爲屬性。

2

這是爲我工作(2.6.2)

class Rule (object): 
    def __init__(self, *args): 
     self.criteria = [] 
     """@type : list of Criterion""" 
     crit = self.criteria[0] 
     #on this line, code completion works for "crit" 
5

如果我理解你的問題,你正在尋找正確的內容是從PyCharm一般類型推斷。來自一個靜態類型的語言,當我使用代碼完成時,我感到很困惑,並且選擇的數量與python庫的內容差不多。

我發現在PyCharm中,它可以選擇在運行時收集類型信息,並在開發時(即代碼完成)使其可用。

這裏是你怎麼做...

首選項> Python調試>「收集的代碼洞察運行時類型」

正如你「調試」你的代碼(不是你不必使用斷點)。 PyCharm將開始爲所有代碼導航/完成提供更好的建議。

乾杯

Picture of Debug Preferences

相關問題