2016-11-11 51 views
0

我使用PyCharm作爲編輯器。例如,我有一個功能:Python。提示變量

def get_instance(): 
    # method without doc sctring in some module 
    # returns instance of MyClass 
    return some_var 

而且我這就要求get_instance()秒文件:

var = get_instance() 

我怎樣才能定義數據類型的值?我想爲自變量使用自動完成功能。

例如在php這將是這樣的:

/** @var MyClass $var */ 
$var = getInstance(); 

在此之後我將看到的$var所有方法和屬性。如何爲python變量聲明docstring?我知道:type:rtype,但如果我需要爲特定變量聲明類型?我可以申報幾種類型嗎?我該做什麼?

說明:我無法對get_instance()做任何更改。

+0

有你看着[提示](https://docs.python.org/3/library/typing.html)? – Olian04

+0

您能澄清一下您確實需要或想要使用docstrings嗎? –

+0

@Rightleg在任何代碼的地方。例如:'get_docker()'返回'Docker'實例(我知道它)。但功能沒有docstring,我不能改變它。所以,我調用了'var = get_docker()',並且我想定義'var'的類型(它是Docker實例)。 –

回答

0

您可以按照與類的描述屬性相同的方式執行此操作。這裏例如:

from example_module import MyClass 

var = get_instance() 
""" 
:type var: MyClass 
""" 

您也可以使用說明不導入這樣的:在Pycharm自動完成的

test = my() # type: dict 

例子:

var = get_instance() 
""" 
:type var: example_module.MyClass 
""" 

第二種方式使用PEP 484

enter image description here

enter image description here

enter image description here

2

我不認爲你可以通過docstring做到這一點,但有一種機制叫做annotation。您可以在冒號:後面附加任意表達式,並使用箭頭->將其添加到函數聲明本身。例如:

def getInstance(param: str) -> MyClass 
    return some_var 

我在此處添加了一個用於說明目的的輸入參數。在這種情況下,strMyClass分別代表預期的輸入和返回類型。它們從未在代碼中直接使用,只是隱藏在關注類似事物(如編輯器)的最終用戶的func_annotations屬性中。

+0

感謝您的回答。但我怎麼知道它只適用於python 3.是真的嗎?類似的方法 - 在每個參數的文檔中使用':type'。但有時可以方便地指定變量的實例(特別是如果您不能更改調用的函數的文檔字符串)。 –