我有一个继承的类,我尝试使用另一个参数(language
)。我不确定在__init__
内将此论点置于何处。
致电课程:
self.highlighter = Highlighter(self.editor.document(), language='yaml')
类别:
class Highlighter(QSyntaxHighlighter):
def __init__(self, language, parent=None):
self.language = language
super(Highlighter, self).__init__(parent)
if self.language == 'yaml':
self.lguge_ymal()
目前,无论我在哪里放置language
参数,运行代码时都会出错:
TypeError: __init__() got multiple values for keyword argument 'language'
答案 0 :(得分:1)
目前,__init__
的签名有一个位置参数(language
)和一个关键字参数(parent
)。但是,然后通过将父项作为postional参数并将语言作为关键字参数传递来调用它。因此,您最终会有效地传递语言值两次(因此错误)。
我认为像这样定义你的类会更有意义:
class Highlighter(QSyntaxHighlighter):
def __init__(self, parent=None, language=''):
super(Highlighter, self).__init__(parent)
self.language = language
if self.language == 'yaml':
self.lguge_ymal()
然后您可以通过以下任何方式使用它们:
self.highlighter = Highlighter(self.editor.document(), language='yaml')
self.highlighter = Highlighter(self.editor.document(), 'yaml')
self.highlighter = Highlighter(self.editor.document())
self.highlighter = Highlighter(language='yaml')