Можно ли «подсказать» словарные ключи? - PullRequest
1 голос
/ 18 мая 2019

В Завершение кода PyCharm > «Базовое завершение»> «Вызов базового завершения»> «Словари». Я вижу, что если вы жестко закодируете словарь для некоторых значений, вы можете использовать завершение кода при записи код об этом словаре.

Но очевидно, что во многих случаях вы будете работать с диктатом, и у вас есть некоторое представление заранее о том, какой будет структура этого диктата, и вы не хотите жестко кодировать диктовку в своем коде. Например, может быть, вы анализируете какой-нибудь YAML или JSON с ожидаемой структурой.

Было бы очень хорошо, если бы вы могли "подсказать" структуру в Python, чтобы вы могли легко и быстро кодировать все места, где вы используете этот словарь. Это возможно?

Ответы [ 2 ]

3 голосов
/ 18 мая 2019

Насколько мне известно, не существует согласованного способа указания подсказки для конкретных имен ключей и соответствующих значений словаря Python до тех пор, пока в Python 3.8 не будет введен TypedDict.

1 голос
/ 18 мая 2019

В Python пока нет "официальной" поддержки типизированных (подсказанных) словарей. Однако пакет mypy_extensions предоставляет TypedDict, который поддерживает следующий синтаксис для определения типизированных словарей, которые могут быть проверены MyPy.

DictT = TypedDict(
    'DictT ',
    {
         'field': str, 
         'int_field': int,
    }
)

https://www.python.org/dev/peps/pep-0589/#alternative-syntax

Затем вы можете интегрировать MyPy в PyCharm, но в соответствии с их системой отслеживания ошибок нет прямой поддержки подсказок типа TypedDicts https://youtrack.jetbrains.com/issue/PY-36008.

...