2012-06-24 28 views
53

tôi nhận được lỗi này:Python thừa kế: Lỗi Loại: đối tượng .__ init __() mất không có thông số

TypeError: object.__init__() takes no parameters 

khi chạy mã của tôi, tôi không thực sự nhìn thấy những gì tôi đang làm sai ở đây mặc dù:

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

Trả lời

71

bạn đang gọi tên lớp sai trong siêu của bạn() gọi:

class SimpleHelloWorld(IRCReplyModule): 

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

về cơ bản những gì bạn đang giải quyết đến là 012.của lớp cơ sở đối tượng không có tham số.

của nó một chút dư thừa, tôi biết, phải xác định các lớp mà bạn đã bên trong, đó là lý do tại python3 bạn chỉ có thể làm: super().__init__()

+4

@LucasKauffman: Thực ra tôi không nghĩ rằng rất nó ngớ ngẩn của ya. Nó có thể dễ dàng là một khái niệm khó hiểu. Tôi không đổ lỗi cho bạn. – jdi

+1

Nguy cơ vi phạm nhiều người Pythonians: Đó là - imho - là thiết kế ngôn ngữ khủng khiếp. Cảm ơn vì sự giúp đỡ của bạn @jdi! –

+2

@JohannesFahrenkrug - Tôi không nghĩ rằng bạn sẽ xúc phạm bất cứ ai, bởi vì điều đó đã được xác định là một thiết kế tồi và cố định trong python3: https://docs.python.org/3/library/functions.html#super – jdi

Các vấn đề liên quan