2017-10-22 2 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) 및 하나의 키워드 인수 (parent). 그러나 부모를 우편 인수로 사용하고 언어를 키워드 인수로 전달하여 호출합니다. 따라서 결국 언어 값 을 두 번 번 (따라서 오류) 전달하게됩니다.

나는이 같은 클래스를 정의하는 것이 더 나을 생각 :

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

관련 문제