Python 2.7 在继承的类中传递附加参数

Python 2.7 在继承的类中传递附加参数,python-2.7,class,pyqt,parameter-passing,signature,Python 2.7,Class,Pyqt,Parameter Passing,Signature,我有一个继承的类,在该类中我尝试使用一个附加参数(语言)。我不确定必须将此参数放在\uuuuu init\uuuu中的何处 调用类: self.highlighter = Highlighter(self.editor.document(), language='yaml') 类别: class Highlighter(QSyntaxHighlighter): def __init__(self, language, parent=None): self.langua

我有一个继承的类,在该类中我尝试使用一个附加参数(
语言
)。我不确定必须将此参数放在
\uuuuu init\uuuu
中的何处

调用类:

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()
当前,无论将
语言
参数放在何处,运行代码时都会出现错误:

TypeError: __init__() got multiple values for keyword argument 'language'

目前,您的
\uuuuu init\uuuu
的签名有一个位置参数(
语言
)和一个关键字参数(
父项
)。但是您可以通过将父参数作为positional参数传递,将语言作为关键字参数传递来调用它。因此,您最终有效地传递了两次语言值(因此产生了错误)

我认为这样定义类更有意义:

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')