Что означает -> (символ стрелки выше тире) в сигнатуре метода Python?

E сть ->или символ тире-больше-в конце метода python, и я не уверен, что это значит. Можно также назвать это стрелой.

Вот пример:

@property
def get_foo(self) -> Foo:
    return self._foo

где self._foo это пример Foo.

Я предполагаю, что это какое-то статическое объявление типа, чтобы сказать интерпретатору, что self._foo имеет тип Foo. Но когда я проверил это, если self._foo это не пример Foo, ничего необычного не происходит. Кроме того, если self._foo имеет тип, отличный от Foo, скажем, это было int, затем type(SomeClass.get_foo()) возвращается int, Итак, какой смысл -> Foo?

Эту концепцию трудно найти, потому что это символ без общего имени, а термин "стрелка" вводит в заблуждение.

1 ответ

Решение

Это функция аннотации. Его можно использовать для добавления дополнительной информации к аргументам или возвращаемых значений функций. Это полезный способ сказать, как должна использоваться функция. Аннотации функций хранятся в __annotations__ приписывать.

Варианты использования (из документации)

  • Предоставление информации о наборе

    • Проверка типа
    • Пусть IDE покажут, какие типы ожидает и возвращает функция
    • Перегрузка функций / универсальные функции
    • Мосты на иностранных языках
    • Приспособление
    • Предикатные логические функции
    • Отображение запроса базы данных
    • Маршалинг параметров RPC
  • Дополнительная информация

    • Документация для параметров и возвращаемых значений

От python-3.5 может использоваться для подсказок типа

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