这似乎与代码的内容完全无关,所以我会保持它的通用性。
我在我的一个模块底部的最后一个类中添加了一个多行文档字符串 - 只是为事物添加标签的东西 - 当我通过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行,但未能超越。我尝试将大型多行注释转移到另一个类并对其进行帮助,并且它工作正常,因此评论似乎没有问题。然后我在模块中的新的最后一个类上做了一个帮助,但它失败了。似乎接近结束的位置是问题。
我将评论移回到失败的类并删除了所有代码并执行了帮助(),并且它运行正常。我开始添加方法,它一直工作到最后一个,只有一行代码。我改变了它的每一部分 - 重命名它,删除了args,交换了一行代码以换取通行证 - 该类的帮助总是失败,直到我彻底删除它。帮助确实在module.Class.method上工作,所以方法本身及其大的多行注释似乎没问题。
然后我将整个类在模块文件中移到了它之前的类之前。现在帮助它了。但是,现在文件中的最后一个类的帮助失败了,尽管它甚至没有文档字符串。我把课程搬到了最底层,然后开始玩弄结尾的东西。它似乎与最后一个方法有问题,这意味着即使我在它们之前删除了许多 - 比删除最后一个文本更多的文本 - 我仍然会遇到问题。我在最后一个方法中添加了一个docstring并且帮助失败了,但是在最后三个方法中添加一个docstring(只是一个“what”)使它再次起作用。整件事情完全莫名其妙。
这是一个我已经错过的已知问题吗?似乎某些类/方法配置可以杀死帮助,除非所有方法 - 尤其是除了轻微复杂的方法 - 都有文档字符串。
编辑添加一小段代码作为示例:
def setLabelChangeDGC (self, control):
control.dragCallback = self.getLabelChangeDGC(control)
这是文件中最后一个类的最终方法。它引起了崩溃的帮助。删除此方法将允许帮助再次处理该类。但是,将其保留在上一个类之上并将其移动到上一个类之上将导致它再次对此类工作正常,但随后在文件中的新最终类开始失败。
答案 0 :(得分:0)
导入maya模块时说
import maya.cmds as cmds # or
import maya.mel as mel
确保您必须在每次导入结束时放置cmds或mel部分
然后你使用let say
cmds.sphere()
maya还定义了自己的帮助功能! help()
否则你最终会混合/覆盖maya定义的一些python方法,这也可能是你获得奇怪结果的原因。
我不认为如果你把你的班级移到模块中的任何地方会产生任何不同,因为当一个对象被实例化时,它与它在OO代码中的位置无关......