Я довольно часто писал на Python какие-то вспомогательные вещи, иногда сравнительно крупные, но почти всегда не знание типа объекта с которым работаешь было не критичным. Плюс возможность разрабатывать в IPython сильно облегчала жизнь. И так было до тех пор, пока я не решил плотно использовать Twisted. И оказалось что в IPython не попишешь нормально, а занание типов параметров в функциях обратного вызова и классов из обширного становится необходимостью.
И вот тут то я оказался в неком тупичке. Есть большое количество разнообразных классов со сложными интерфейсами. Перепробованные IDE (Eclipse, PyCharm и даже Emacs) не позволяют воспользоваться автодополнением в незнакомых им классах, что логично. В результате, весь код начинает выглядеть как пример ниже.
"""
тут какое-то описание функции
@param request: тут какое-то описание параметра
@type request: Request (1)
"""
Да, безусловно, указывать
Задержите эту мысль. Перед вами уникальная возможность приобрести великое понимание сути вещей. Задержали? Сделайте глубокий вдох и приступайте к переписыванию вашего кода на Java с небольшими примесями Scala.
Не вариант.даже с учетом всех проблем привносимых динамической типизацией, Python остается одним из самых простых языков программирования, при этом обладающий очень серьезными возможностями. А вот Scala – это C++ в мире JVM, безграничное количество возможностей выстелить себе в ногу.
Именно поэтому я написал “с небольшими примесями”. Там где это как-то помогает используем, иначе не используем.
Мне кажется, самым удобыным способом было бы указывать полный путь до класса в докстринге, например:
@param request: package.module.MyClass
И тогда любой редктор смог бы понять, что это за переменная.
да, я так и делаю (просто пример обрезанный). Тут просто проблема при изменении типов аргументов возникает. Плюс если передается массив /словарь, то уже такой финт не сработает.
Я использую автокомплит из PyCharm. В большинстве случаев помогает.
Ему можно давать хинты, типа:
def blah(hello):
“””
@type hello: dict of (str, SomeObject)
“””
Потом в коде оно правильно выведет типы и предложит completion.
О, вот за dict of огромное тебе спасибо!
С ней не надо бороться, её надо использовать. Пишите меньше кода, насколько это возможно.
Гхм… я даже и не знаю, воспринимать этот комментарий как шутку или что.
Ну а теперь как вам живётся с typing?
Поделитесь впечатлениями и советами.
Отлично живется, теперь хотя бы на уровне IDE можно понять заранее что же будет в коде