为什么我收到错误消息,要求使用此超级初始化函数传递一个参数

时间:2019-01-24 21:24:20

标签: python maya

当我在Maya的脚本编辑器中运行此代码时,出现以下错误: “ TypeError:super()至少接受1个参数(给定0)”,我不明白我的super init函数需要什么。

google和youtube。我正在Maya 2018中运行此代码。

import maya.cmds as cmds

class one:
    mod_txt = "_one_mod"         

    def __init__(self,txt):
        self.txt = txt

    def mod_txt_method(self):
        self.txt = self.txt + self.mod_txt

class two(one):
    mod_txt = "_two_mod" 

    def __init__(self,txt,txt_two):
        super().__init__(self,txt)
        self.txt_two = text_two    

ltv = two('doug','chris')

print ltv.txt
print ltv.txt_two

我认为我应该能够在类“ two”中添加新属性“ txt_two”。

1 个答案:

答案 0 :(得分:1)

脚本有一些问题。

首先,one需要继承某些东西,在这种情况下是object,否则super将失败。

接下来,为了使super访问其继承的__init__,您需要传递类和实例:super(two, self).__init__(txt)。无需将self传递给__init__方法,只需传递该方法所需的参数即可。

two的{​​{1}}方法中还存在一个问题,其中变量__init__不存在(可能是拼写错误?)。

现在脚本将按预期执行。您还可以考虑清理脚本,使其使用标准约定:类名应以大写字母开头,在模块级别时,应使用双倍空格分隔代码块,并在逗号后使用空格。

这是最终代码:

text_two