Как вы вводите подсказку для параметра функции, который может быть одним из нескольких типов? - PullRequest
0 голосов
/ 10 апреля 2019

Я добавляю подсказки типа к некоторому коду Python 2 и натолкнулся на небольшую дилемму. Как намекнуть на тип возврата функции, когда этот возврат может быть одним из нескольких типов?

Я работаю с функцией, которая выглядит как ...

def foo(param):
    # do stuff
    return dict_

, где param - строка, а dict_ - словарь с ключами, которые всегда являются строками, и значениями, которые могут быть целыми числами или строками.

Мое решение состояло в том, чтобы напечатать подсказку функции, как показано ниже, но я хотел проверить, что это правильная стратегия.

def foo(param):
    # type: (str) -> Dict[str, object]
    # do stuff
    return dict_

1 Ответ

0 голосов
/ 10 апреля 2019

Требуется объединение (также называемое типом суммы) Union[str,int] вместо более общего object:

def foo(param):
    # type: (str) -> Dict[str,Union[str,int]]
    # ...
    return dict_

Используя object, вы заявляете, что значения словаря могутбыть любого произвольного типа.Union[str,int] означает, что это может быть int;или это может быть str;но это не может быть float, или list, или другой dict, или что-либо иное, чем int или str.

...