Помощь Python () в Maya 2012 ведет себя довольно странно - PullRequest
0 голосов
/ 26 октября 2011

Кажется, что это совершенно не связано с содержанием кода, поэтому я буду использовать его как общий.

Я добавлял многострочную строку документации в последний класс внизу одного из моих модулей - просто что-то, что добавляет ярлыки к вещам - и когда я импортировал модуль через редактор сценариев 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)

Это был последний метод последнего класса в файле. Это привело к краху. Удаление этого метода позволило бы снова помочь работе с классом. Однако, если оставить это внутри и переместить сам класс над предыдущим классом, это снова приведет к его нормальной работе для этого класса, но затем начнется сбой на новом конечном классе в файле.

1 Ответ

0 голосов
/ 22 октября 2012

когда вы импортируете модули Maya, скажите

import maya.cmds as cmds # or
import maya.mel as mel

, убедитесь, что вы должны указывать в качестве cmds или в качестве мелкой части в конце каждого импорта

, тогда вы используетеДопустим,

cmds.sphere()

Майя также определяет свою собственную функцию помощи !!!help ()

в противном случае вы в конечном итоге смешаете / переопределяете некоторые из методов, определенных maya над python, это также может быть причиной того, что вы получите странный результат.

Я не думаю, что если вы переместите свой класс куда-нибудь вверх в модуле, это будет иметь какое-то значение, потому что, когда объект создается, он не имеет отношения к его размещению в коде OO ...

...