我驚喜地發現使用PyDev的Eclipse能夠猜測大多數變量的類型並幫助顯示成員列表。我在學習Python,我認爲我應該忘記強類型語言的所有優點,但看起來我錯了。如何告訴Python IDE(和解釋器)變量的類型
我想知道IDE(甚至是Python解釋器)到底有多遠。我有一些模塊級別的變量在下面的代碼片段中定義,我希望IDE知道它們的類型。
關於IDE的問題1:是否可以聲明變量的類型,以便代碼完成知道其成員?
有關Python的問題2:是否可以聲明變量的類型,以便在執行過程中更改類型時發出警告?
例如,將光標放在以下代碼片段上的第一個c.
後面並按ctrl+space
,第一個建議是val
。好極了!
Python的變量是動態的,它們的類型可以改變,因爲沒有辦法爲Eclipse知道,c
在模塊級別定義,並在func2
將被定義使用這一招並不第二c.
工作在func1
。
c = None
class MyClass:
val = 0
def func1():
c = MyClass()
print c. # Eclipse knows that val is a member of c
def func2():
print c. # Eclipse doesn't know that val is a member of c
截至目前,'c = None'行完全沒有。你在全局範圍內定義了''c',但你的代碼沒有在全局範圍內。 'func1'和'func2'中的'c'與你在那裏定義的'c'不同,並且彼此不同。也許你的IDE不認識'val'作爲'c'的成員,因爲'c'尚未在該範圍內定義,因此**具有**沒有成員,類或甚至值 – scohe001
@Josh:我忘了兩個函數中的'global c',這本身就提高了猜測的質量。一個評論和兩個答案都非常有用,但'assert isinstance()'正是我所期待的。 – stenci