2012-06-24 2 views
53

나는이 오류 얻을합니다 : 내 코드를 실행할 때파이썬 상속 : 형식 오류 : 개체 .__ 초기화 __()는 매개 변수가

TypeError: object.__init__() takes no parameters 

것은 정말 내가 잘못 여기서 뭘하는지 볼 수 없습니다를 생각 :

class IRCReplyModule(object): 

    activated=True 
    moduleHandlerResultList=None 
    moduleHandlerCommandlist=None 
    modulename="" 

    def __init__(self,modulename): 
     self.modulename = modulename 


class SimpleHelloWorld(IRCReplyModule): 

    def __init__(self): 
      super(IRCReplyModule,self).__init__('hello world') 

답변

71
당신은 당신의 슈퍼에서 잘못된 클래스 이름을 호출하는

() 호출 : 기본적으로

class SimpleHelloWorld(IRCReplyModule): 

    def __init__(self): 
      #super(IRCReplyModule,self).__init__('hello world') 
      super(SimpleHelloWorld,self).__init__('hello world') 

당신이 해결하는 것을는이다 params를 취하지 않는 객체 기본 클래스의.

그 python3에 당신은 할 수있는 이유는 이미 내부에있는 클래스를 지정해야하는, 내가 알고, 조금 중복 : super().__init__()

+4

@LucasKauffman을 : 사실 나는 매우 생각하지 않습니다를 어리석은. 혼란스러운 개념 일 수 있습니다. 나는 너를 비난하지 않는다. – jdi

+1

많은 Python 사용자를 괴롭히는 위험에 처해 있습니다. 즉, imho는 끔찍한 언어 디자인입니다. 도와 주셔서 감사합니다 @jdi! –

+2

@ JohannesFahrenkrug - 나쁜 디자인으로 확인되어 python3에서 수정 되었기 때문에 다른 사람을 불쾌하게 할 생각은 없습니다. https://docs.python.org/3/library/functions.html#super – jdi