PyCharm предупреждение «Ожидается конец оператора» внутри подсказок типа

1

Я получаю это странное предупреждение "End of statement expected" внутри комментария, который функционирует как подсказка типа Python 2/3:

Изображение 174551

Любые идеи, что не так с этими типами подсказок и почему я получаю это предупреждение?

Я использую PyCharm Professional 2018.2.3 с Python 3.6 (Anaconda).

  • 1
    Я не уверен, что это проблема, но, возможно, Pycharm недоволен импортом до комментария типа? Я думаю, что общее ожидание (соглашение? Стандарт?) Состоит в том, что комментарий типа стоит на первом месте, перед строкой документации и любым кодом, поэтому возможно, что любой парсер, используемый Pycharm, может быть недоволен, если вы сделаете это любым другим способом. Я также думаю, что ваши подсказки типа для compute_connected_components неверны - вы, вероятно, хотели сделать # type: (blah) -> Tuple[a, b, c] вместо # type: (blah) -> (a, b, c) ,
Теги:
pycharm
syntax-error
type-hinting

1 ответ

1

Вы можете использовать прямые ссылки в своих типах с помощью python> = 3.5.

def resolve_notehead_wrt_staffline(notehead: 'CropObject', staffline_or_ledger_line: 'CropObject') -> int:
    """blahh blah"""
    from muscima.cropobject import CropObject
    ...

Но даже это не исправит typehint в вашем случае. Здесь я предлагаю не делать импорт из функции.

Редактирование: я немного тушил это и понял, что просто сказать "не делай этого", но не зная, почему это не очень полезно.

PEP8 говорит, что вы не должны импортировать нигде, кроме верхней части файла, но время от времени у нас есть "очень хорошая причина" для этого в другом месте.

В вашем случае функция ожидает, что модуль уже был импортирован, иначе объекты аргументов не будут существовать. В этом случае вы могли бы также поместить импорт где-то вне сферы действия этой функции.

  • 0
    Спасибо за ответ. К сожалению, здесь собрались вместе две вещи: мне нужно поддерживать Python 2, поэтому мне нужны комментарии типа и я бы создал циклическую зависимость, если я импортирую CropObject из верхней части класса, так что, я думаю, я просто удалю комментарий типа , Дело в том, что раньше это работало без предупреждений или ошибок, но изменилось внутри PyCharm.
  • 0
    Я думаю, что вы можете переписать, чтобы удалить циклическую зависимость, или жить без ввода текста. Я не знаю, есть ли другой вариант в вашем конкретном случае.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню