Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python类实例问题(init接受五个参数;只传递两个)_Python_Arguments_Instance_Maya - Fatal编程技术网

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

Python类实例问题(init接受五个参数;只传递两个),python,arguments,instance,maya,Python,Arguments,Instance,Maya,我一直在编写IK/FK关节匹配脚本,上个月我终于能够正常工作。今天我启动Maya,运行脚本,当界面加载时,我收到以下错误 在运行加载脚本时执行以下操作: # Error: NameError: file <maya console> line 196: global name 'Fks' is not defined # 我被告知,如果在实例化类时将变量传递到该类中,只要传递所需的参数,它就会正常运行,但是在发生更改时 def __init__(self, name, *args)

我一直在编写IK/FK关节匹配脚本,上个月我终于能够正常工作。今天我启动Maya,运行脚本,当界面加载时,我收到以下错误

在运行加载脚本时执行以下操作:

# Error: NameError: file <maya console> line 196: global name 'Fks' is not defined #
我被告知,如果在实例化类时将变量传递到该类中,只要传递所需的参数,它就会正常运行,但是在发生更改时

def __init__(self, name, *args):

在maya中加载脚本时,我收到以下消息

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

有人能帮我理解什么是快乐吗?因为我以为我在传递所有参数

简而言之,调用
Create\u Selection\u Chains(…)
现在还需要三个参数。为什么?

  • \uuuu init\uuuu(self、name、Fks、Ikw、ikpv)
    需要几个位置参数,即
    name、Fks、Ikw、ikpv
  • \uuuu init(self、name、*args):
    需要一个(
    name
    )和0到多个(
    *args
解决方案:在实例化时传递更多值,例如
创建选择链(“左臂”、“foo”、“bar”、“baz”)


给定的

class Create_Selection_Chains(object):

    def __init__(self, name, *args):
        self.Fks = Fks
        self.Ikw = Ikw
        self.Pv = ikpv
        self.name = name
        ...
正如您可能已经发现的那样,
初始化(self,name,*args)
不起作用,因为
args
没有映射到任何东西,
Fks
Ikw
ikpv
没有定义。这将抛出一个错误

代码

将以下内容视为众多选项之一:

class Create_Selection_Chains:

    def __init__(self, name, fks, ikw, ikpv):
        self.name = name
        self.fks = fks
        self.ikw = ikw
        self.pv = ikpv

        ...
最后,在实例化时传入更多值,例如:

left_arm_select = Create_Selection_Chains("left arm", "foo", "bar", "baz")

*args是可变的,您的更改不是可变的。 这里必须给出在init函数中定义的每个参数。
您可以将其更改为Fks=some value、IKw=some value等,使其成为可选参数。

I这确实会删除我的错误,但现在我似乎无法获取返回值来替换foo、bar、baz值。我不理解您的评论。您必须详细说明“我的返回值替换foo、bar、baz值”。
left_arm_select = Create_Selection_Chains("left arm")
class Create_Selection_Chains(object):

    def __init__(self, name, *args):
        self.Fks = Fks
        self.Ikw = Ikw
        self.Pv = ikpv
        self.name = name
        ...
class Create_Selection_Chains:

    def __init__(self, name, fks, ikw, ikpv):
        self.name = name
        self.fks = fks
        self.ikw = ikw
        self.pv = ikpv

        ...
left_arm_select = Create_Selection_Chains("left arm", "foo", "bar", "baz")