2017-10-22 7 views
1

私は追加の引数(language)を使用しようとする継承クラスを持っています。私は__init__にこの議論をどこに置かなければならないのか分かりません。継承クラスの追加引数を渡す

呼び出すクラス:

self.highlighter = Highlighter(self.editor.document(), language='yaml') 

クラス:

TypeError: __init__() got multiple values for keyword argument 'language' 
:私は language引数を置くコード、どんなにを実行すると、現在

class Highlighter(QSyntaxHighlighter): 

    def __init__(self, language, parent=None): 
     self.language = language 

     super(Highlighter, self).__init__(parent) 

     if self.language == 'yaml': 
      self.lguge_ymal() 

、私はエラーを取得します

答えて

1

現時点では、__init__の署名には、 t(language)と1つのキーワード引数(parent)。しかし、親をポスターナル引数として、言語をキーワード引数として渡すことで呼び出すことができます。だから、効果的に言語値を2回(したがってエラー)に渡すことになります。

は、私はそれがこのようなあなたのクラスを定義するために、より理にかなって思う:

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') 
:あなたは、これらのいずれかの方法で使用することができます

class Highlighter(QSyntaxHighlighter): 
    def __init__(self, parent=None, language=''):  
     super(Highlighter, self).__init__(parent) 
     self.language = language 
     if self.language == 'yaml': 
      self.lguge_ymal() 

関連する問題