0

我不明白为什么在我调用第二个函数后我的列表没有返回到课堂并留在那里,这是我的代码:

class ShockAbsorber:
    '''create Proxy, based of 2 locators'''
    def createProxy(self):
        self.allLoc = {}
        self.allLoc["CylinderLoc"] = pm.spaceLocator (n = "Cylinder_Loc")
        self.allLoc["PistonLoc"] = pm.spaceLocator (n = "Piston_Loc", p =[0,30,0])
        pm.CenterPivot()

    '''create bones on locators'''
    def createRig(self):
        for name,loc in self.allLoc.items():
            print Loc

我在一个单独的文件上有一个界面,为每个功能创建 2 个按钮。

    #define button Create Proxy
def CreateProxyPressed(self):
    csa = sa.ShockAbsorber() 
    csa.createProxy()

#define button Create Proxy
def CreateRigPressed(self):
    csa = sa.ShockAbsorber() 
    csa.createRig()

如果我运行我的代码,我会收到此错误消息:

AttributeError: ShockAbsorber instance has no attribute 'allLoc'

我希望这是足够的信息让您了解我的问题,我正在为“Autodesk Maya”编写一个工具。我很确定我的概念是正确的,所以我做错了什么?

先感谢您!

PS我很抱歉给大家带来了困惑,但是在您发现我的错字后,我现在编辑了我的代码以使其正确!

4

2 回答 2

0

您需要存储allLoc在类实例中,而不是返回它:

def createProxy(self, *args):
    allLoc = {}
    allLoc["CylinderLoc"] = pm.spaceLocator (n = "Cylinder_Loc")
    allLoc["PistonLoc"] = pm.spaceLocator (n = "Piston_Loc", p =[0,30,0])
    pm.CenterPivot()
    self.allLoc = allLoc
于 2013-02-05T12:31:00.153 回答
0

createProxy需要设置self.allLoc。您仅设置本地名称allLoc

于 2013-02-05T12:31:09.123 回答