当我在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”。
答案 0 :(得分:1)
脚本有一些问题。
首先,one
需要继承某些东西,在这种情况下是object
,否则super
将失败。
接下来,为了使super
访问其继承的__init__
,您需要传递类和实例:super(two, self).__init__(txt)
。无需将self
传递给__init__
方法,只需传递该方法所需的参数即可。
two
的{{1}}方法中还存在一个问题,其中变量__init__
不存在(可能是拼写错误?)。
现在脚本将按预期执行。您还可以考虑清理脚本,使其使用标准约定:类名应以大写字母开头,在模块级别时,应使用双倍空格分隔代码块,并在逗号后使用空格。
这是最终代码:
text_two