Кажется, что это совершенно не связано с содержанием кода, поэтому я буду использовать его как общий.
Я добавлял многострочную строку документации в последний класс внизу одного из моих модулей - просто что-то, что добавляет ярлыки к вещам - и когда я импортировал модуль через редактор сценариев Maya и запустил справку (module.Class) на этот класс, я получил эту ошибку:
# Error: IndexError: file C:\Program Files\Autodesk\Maya2012\bin\python26.zip\inspect.py line 568: list index out of range #
Я потратил некоторое время на то, чтобы выяснить, что из-за многострочной строки вызвала ошибку, сравнив ее с работой с 1 или 2 строками, но не достигнув ее. Я попытался переместить большой многострочный комментарий в другой класс и помог с этим, и он работал нормально, так что, похоже, комментарий был не спорным. Затем я помог с новым последним классом в модуле, и он не удался. Казалось, что позиция в конце была проблемой.
Я переместил комментарий обратно в класс, в котором произошел сбой, удалил весь его код и сделал help (), и он работал нормально. Я начал добавлять методы обратно, и это работало до самого последнего, в котором была только одна строка кода. Я изменил каждую его часть - переименовал ее, удалил аргументы, поменял одну строку кода на пропуск - помощь классу всегда терпела неудачу, пока я не удалил ее полностью. Справка поработала с модулем. Class.method, поэтому сам метод и его большой многострочный комментарий казались нормальными.
Затем я переместил весь класс вверх в файле модуля до класса прямо перед ним. Помощь теперь работала на это. Однако теперь справка не удалась для последнего класса в файле, хотя в нем даже нет строки документации. Я переместил класс обратно на дно и начал играть с вещами в конце. Казалось, что с последним методом возникла проблема, то есть, даже если бы я удалил многие из них - больше текста, чем удаление только одного в конце - у меня все равно была бы проблема. Я добавил строку документа к последнему методу, и справка не удалась, но добавление строки документа (просто «что угодно») к последним трем заставило его снова работать. Все это совершенно сбивает с толку.
Это известная проблема, которую я как-то пропустил? Кажется, что некоторые конфигурации классов / методов могут убить справку, если все методы, особенно более сложные, не имеют строк документации.
редактирование, чтобы добавить небольшой фрагмент кода в качестве примера:
def setLabelChangeDGC (self, control):
control.dragCallback = self.getLabelChangeDGC(control)
Это был последний метод последнего класса в файле. Это привело к краху. Удаление этого метода позволило бы снова помочь работе с классом. Однако, если оставить это внутри и переместить сам класс над предыдущим классом, это снова приведет к его нормальной работе для этого класса, но затем начнется сбой на новом конечном классе в файле.