2011-04-06 3 views
2

편집 : 이것은 바보 같은 실수이지만 답변을 살펴보십시오. init 메서드는 self 변수를 정의하지 않습니다.Python 상속, 클래스 수준 변수, __init__은 인수가 필요 없습니다.

나는 파이프 라인의 단계 몇 가지 파이썬 클래스가 있습니다. 기본 클래스를 상속합니다.

class StageBase(object): 
    key = Segments.NONE 
    _preprocessors = [] 

    def __init__(): 
     self.closing = False 
     self.working = False 
     self._que = None 
     self._working_lock = None 
     self._que_lock = None 

    #whole bunch of other methods 

상속하는 클래스는 key_preprocessors 우선합니다. 명시 적 __init__() 방법을 추가하기 전에, 모든 것이 지금 괜찮 았는데 나는 다음과 같은 오류 얻을 :

TypeError: __init__() takes no arguments (1 given)

오류의 라인은 내가이 예에서 (_preprocessors에 우선 라인을,이 클래스의 변수는 다른 단계를 나타냅니다 이 단계 이전에 실행되어야 함).

이 오류가 발생 예 클래스 :

class StaticPageStage(StageBase): 
    key = Segments.STATICPAGE 
    _preprocessors = [FacebookGraphStage(), ] 

    def __init__(): 
     pass 

    def process(self, data): 
     data = self._preprocess(data) 
     return self.handle_results(tuple(x for x in data)) 

사람이 어떻게이 문제를 해결하는 방법 말해 줄 수 있습니까?

+0

문제점 제목과 관련이 없기 때문에 문제의 제목을 변경하려고했으나 지나치게 침입당하는 것을 피하고 싶었습니다. 나는 그것을 완전히 바꾸어야 만 했으니 .. 혼자서 바꾸어주세요. :) –

+0

최근에 많은 구문을 저글링하고 있습니다. 어리석은 실수. – marr75

+0

누구나 중복 된 질문과 유사한 질문을 알고 있습니까? – marr75

답변

7

당신은 __init__에 기본 self 매개 변수를 추가해야합니다

def __init__(self): 
+0

나는 당황 스럽다. – marr75

1

당신 항상 함수가 결코 매개 변수에 취하지 않는 경우에도, 클래스의 내부 함수 정의 내에서 self 인수를 사용합니다. self은 첫 번째 매개 변수로 모든 함수에 전달되므로 함수 __init__이이를 받아들이지 않는다는 오류가 발생합니다.

class StageBase(object): 
    key = Segments.NONE 
    _preprocessors = [] 

    def __init__(self): 
     self.closing = False 
     self.working = False 
     self._que = None 
     self._working_lock = None 
     self._que_lock = None 

    #whole bunch of other methods 


class StaticPageStage(StageBase): 
    key = Segments.STATICPAGE 
    _preprocessors = [FacebookGraphStage(), ] 

    def __init__(self): 
     pass 

    def process(self, data): 
     data = self._preprocess(data) 
     return self.handle_results(tuple(x for x in data)) 
2

초기화이 서명에 하나 이상의 인수가 있어야합니다 :

여기
def __init__(self): 
    pass 

오류가 FacebookGraphStage에서 아마 온다

는 여기에 몇 가지 (희망) 작업 코드입니다. 문제를 해결하기 위해 초기화 방법 (및 파일에있는 다른 것들)을 확인하십시오.

+0

'__init__'뿐만 아니라'class' 감속도 안의 * 모든 * 함수. – Blender

+0

모두가 아닙니다. 정적 메서드를 사용할 수 있습니다. – marr75

관련 문제