Я новичок в разработке на Python и пытаюсь исправить ситуацию. Я использую Pycharm для разработки. В настоящее время я пытаюсь аннотировать типы переменных для более легкого доступа с автозаполнением и предложениями. Я пробовал итерации кода со смешанными результатами.
Этот код имеет проблему:
path = os.path.dirname(os.path.realpath(__file__)) # type: str
components = path.split(os.sep) # type: list[str]
Первая проблема отображается на открывающей скобке аннотации типавторая строка. Там написано:
Class 'type' does not define '__getitem__', so the '[]' operator cannot be used on its instances.
Я погуглил, и хотя проблема кажется очевидной, открытие кода для класса list
явно показывает метод __getitem__
:
class list(object):
"""
list() -> new empty list
list(iterable) -> new list initialized from iterable's items
"""
....
def __getitem__(self, y): # real signature unknown; restored from __doc__
""" x.__getitem__(y) <==> x[y] """
pass
Хорошо, может быть, это не тривиально для понимания, и есть какой-то другой механизм загрузки в работе. И, кроме того, «проблема» заключается в том, что я использовал list[str]
, а не List[str]
. Поэтому я изменил код:
path = os.path.dirname(os.path.realpath(__file__)) # type: str
components = path.split(os.sep) # type: List[str]
Теперь все ломается: вторая строка теперь жалуется на это:
Expected type 'List[str]', got 'List[str]' instead`
Предыдущая проблема, связанная с __getitem__
, все еще сохраняется.
Есть ли способ аннотировать эти переменные, не вызывая проблем для проверки? Я не очень доволен документацией по Python в этом отношении, не указав явно типы возвращаемых значений их встроенных методов. Я должен полагаться на информацию, которую Pycharm предоставляет во всплывающих окнах документации (Ctrl + q).