0

リストがクラスに返されず、2番目の関数を呼び出した後もそこにとどまらない理由がわかりません。コードは次のとおりです。

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 に答える