Знак «at» (@) в подсказках типа Python (предложено Pylance / Pyright)

В выпуске июля 2022 года расширения Python для Visual Studio Code появились «Подсказки типа вкладок», которые автоматически предлагают возвращаемые типы функций, не имеющих явной аннотации. Чтобы включить его, вы можете установить "python.analysis.inlayHints.functionReturnTypes": true в свои пользовательские настройки IDE (Предпочтения: команда «Открыть настройки» (JSON)).

При тестировании этой функции я заметил следующее предложение внутри класса:

... где выделенный желтым цветом текст — это тип возвращаемого значения, предложенный расширением Python, которое основано на Pylance , которое само полагается на Pyright.

Мой вопрос: что означает знак @ в этом предложении? Существует ли PEP, который относится к такого рода аннотациям типов (с Self@...), или этот способ подсказки типа специфичен для Pyright, отличаясь от стандартного соглашения? Где я могу найти больше информации об этом?

Я нашел похожий вопрос Stackoverflow здесь, но не получил ответа.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
6
0
236
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это @ указывает, что Self является TypeVar, а Self@HereIsMyClassName относится к Self в контексте класса HereIsMyClassName (это также может быть функция). Это недопустимый Python. (Технически это допустимо, поскольку оператор @ является матричным умножением, поэтому вы умножаете матрицы Self и HereIsMyClassName. Однако это не то, что имеется в виду, и на самом деле не имеет никакого смысла.) Не пишите это в своем коде. , но знайте, что именно так Pylance показывает вам TypeVars, когда показывает определения типов. (Возможно, другие редакторы и расширения.)

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