Python. Подсказка для переменной

Я использую PyCharm как редактор. Например, у меня есть следующая функция:

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? Я знаю о :type а также :rtype, но если мне нужно объявить тип для конкретной переменной? Могу ли я объявить несколько типов? Что я должен делать?

Примечание: я не могу делать какие-либо изменения с get_instance(),

2 ответа

Решение

Вы можете сделать это так же, как описание свойств класса. Вот пример:

from example_module import MyClass

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

Также вы можете использовать описание без импорта, как это:

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

Второй способ - использование PEP 484:

test = my()  # type: dict

Примеры автозаполнения в Pycharm:

введите описание изображения здесь

введите описание изображения здесь

введите описание изображения здесь

Я не думаю, что вы можете сделать это с помощью docstring, но есть механизм, называемый аннотацией. Вы можете добавлять любое выражение к параметрам после двоеточия : и к самому объявлению функции, используя стрелку ->, Например:

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

Я добавил входной параметр в целях иллюстрации здесь. В этом случае str а также MyClass являются объектами, которые представляют ожидаемые типы ввода и возврата соответственно. Они никогда не используются в вашем коде напрямую, просто спрятаны в func_annotations атрибут для конечных пользователей, которые заботятся о таких вещах (например, редакторы).

Другие вопросы по тегам