社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python类实例问题(init接受五个参数,只传递两个参数)

AbberantAeons • 5 年前 • 1588 次点击  

我一直在研究一个ik/fk关节匹配脚本,上个月我终于成功地得到了正确的工作。今天启动maya,运行脚本,在加载接口时,我收到以下错误

此脚本在运行加载脚本时:

# Error: NameError: file <maya console> line 196: global name 'Fks' is not defined #

点击我的选择根关节链按钮:

# Error: NameError: file <maya console> line 1: name 'select_joints_afk' is not defined # 

我对这个很陌生,所以我真的不明白到底发生了什么。

class Create_Selection_Chains(object):

    def __init__(self, name, *args):
        self.Fks = Fks
        self.Ikw = Ikw
        self.Pv = ikpv
        self.name = name
        self.combined_selection = self.Fks+self.Ikw+self.Pv
        print("List created"+self.name)

    def select_joints_afk(self):

        if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
            sel = cmds.ls(sl=True)
            fks = sel
            fkCtrls = cmds.listRelatives(sel, allDescendents=True, type=("transform",'nurbsCurve'))
            Fks = [nurbsCurve for nurbsCurve in fkCtrls if nurbsCurve.startswith('FK') & nurbsCurve.endswith('Ctrl')]
            cmds.textFieldButtonGrp(gtF0, edit = True, tx ='' .join(sel),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
            del Fks[1]
            del Fks[2]
            Fks.extend(sel)
            print Fks

            return self.Fks 
        else:
            text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], 
                                        defaultButton='Ok', dismissString='No' )

    def select_joints_aikw(self):

        if cmds.ls(selection = True,type=("transform",'nurbsCurve')):

            sel=cmds.ls(selection = True)
            ikwrist = sel
            Ikw = [nurbsCurve for nurbsCurve in ikwrist if nurbsCurve.startswith('IK') & nurbsCurve.endswith('Ctrl')]
            cmds.textFieldButtonGrp(gtF1, edit = True, tx ='' .join(ikwrist),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))
            cmds.select(ikwrist)
            print Ikw
            return self.ikw
        else:
            text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], defaultButton='Ok', 
                                        dismissString='No' )

    def select_joints_ikpv(self):

        if cmds.ls(selection = True,type=("transform",'nurbsCurve')):
            sel = cmds.ls(sl=True)
            ikPvsel = sel
            ikpv = [nurbsCurve for nurbsCurve in ikPvsel if nurbsCurve.startswith('IK') & nurbsCurve.endswith('Ctrl')]
            cmds.textFieldButtonGrp(gtF2, edit = True, tx ='' .join(ikPvsel),buttonLabel='IK OK',backgroundColor = (.5,.8,.2))        
            cmds.select(ikPvsel)
            print ikpv
            return self.ikpv
        else:
            text = cmds.confirmDialog( title='Error', message='Must select joint', button=['OK'], 
                                        defaultButton='Ok', dismissString='No' )

有人告诉我,如果在实例化类时将变量传递到类中,只要传递所需的参数,它就可以正常运行,但是在更改之后

def __init__(self, name, *args):

def __init__(self, name, Fks, Ikw, ikpv):

我在玛雅加载脚本时收到以下消息

# Error: TypeError: file <maya console> line 413: __init__() takes at least 5 arguments (2 given) #

第413行是我加载实例的位置…:

left_arm_select = Create_Selection_Chains("left arm")

有人能帮我理解发生了什么事吗?因为我以为我在通过我所有的论点

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38747
 
1588 次点击  
文章 [ 2 ]  |  最新文章 5 年前