Hi all. I’m experiencing weird behavior of Python “magic” methods and maya.cmds. Below you can see 2 versions of the code. In both versions I use string representation of the class object as first argument in cmds.connectAttr()
but in second version where I have implemented __getitem__
method maya throws out # TypeError: Invalid argument 1, 'transform1.translateX'. Expected arguments of type ( , ) #
Here si the code:
import maya.cmds as mc
tr1 = mc.createNode("transform", name="transform1")
tr2 = mc.createNode("transform", name="transform2")
Version 1:
class AttrClass:
def __repr__(self):
return "transform1.translateX"
obj = AttrClass()
mc.connectAttr(obj, "transform2.scaleX")
Version 2:
class AttrClass:
def __repr__(self):
return "transform1.translateX"
def __getitem__(self, item):
print(item)
obj = AttrClass()
mc.connectAttr(obj, "transform2.scaleX")
In version 2 if you try explicitly call __repr__()
it works fine :
mc.connectAttr(obj.__repr__(), "transform2.scaleX")
Another weird thing happens if I try to use pymel to connect
import pymel.core as pm
pm.connectAttr(obj, "transform2.scaleX")
This will start to print integers infinitely.
What I’m doing wrong?