在Maya中尝试一些基本编程时,我遇到了;MitMeshPolygon";方法其描述为:"这个类是多边形曲面(网格(的迭代器">
(https://help.autodesk.com/view/MAYAUL/2016/ENU/?guid=__py_ref_class_open_maya_1_1_m_it_mesh_polygon_html)
这似乎正是我所需要的,所以我更多地研究了迭代器,根据我所知,迭代器本身应该是可迭代的,并且有一个iter方法。然而,当试图对它进行迭代时,python告诉我它是不可迭代的。
iterable = OpenMaya.MItMeshPolygon(dagPaths[0])
while not iterable.isDone():
print(iterable)
print(dir(iterable))
<玛雅。OpenMaya.MItMeshPolygon;<在0x0000021A9159D630处滑动类型为"MItMeshPolygon*"的对象>gt;
[">class",">delattr',">dict",">dir',"doc‘,"eq>","formate’,">getattribute,">gt'','hashe','lt','module','ne','new`,'next'reduceeduce_ex‘,'
repr’,'
我想遍历所有的多边形;getArea";,但现在我不知道怎么做,我读到的所有东西都告诉我迭代器应该是可迭代的,但程序告诉我不是这样。我在这里不明白什么?如何使用这些方法来获取有关DagPath指示的对象的特定信息?
您的iterable
有一个__next__
方法。你可能可以做以下事情:
iterator = OpenMaya.MItMeshPolygon(dagPaths[0])
try:
while True:
item = next(iterator)
...
except StopIteration:
pass
请注意,我已经将变量重命名为iterator
,因为这似乎是一个更正确的术语。一个iterable确实应该有一个__iter__
方法,调用iter(iterable)
会将其变成一个执行实际迭代的迭代器,并有一个__next__
方法。
事实上,iterator
实际上可能是一个生成器,在移动中生成值(使用next()
(,并且您将无法访问随机定位的值(例如,使用索引(,只能一个接一个地访问。那么您只需要一个__next()__
方法。但没有看到MitMeshPolygon
的实际代码,这只是猜测。