Что означает -> (символ стрелки выше тире) в сигнатуре метода 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
может использоваться для подсказок типа