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