2015-04-18 3 views
2

Я пытаюсь создать простой HTTP-сервер и использую BaseHTTPServer в python.использование __init__ во время наследования в Python

Когда я пытаюсь запустить код ниже, я получаю сообщение об ошибке, указывающее, что init() принимает ровно 4 аргумента (1 данный).

Я думаю, проблема в том, что конструктор в обработчика перекрывая BaseHTTPServer.BaseHTTPRequest

Пожалуйста, дайте мне знать, где я буду неправильно

class handler(BaseHTTPServer.BaseHTTPRequestHandler): 
    def __init__(self,server): 
    BaseHTTPServer.BaseHTTPRequestHandler.__init__(self) 
    self.server = server 
    self.port = 8080 

def do_GET(self): 
    #perform some operation 
class server(): 

def __init__(self): 
    self.port = 65531 
    self.host = 'localhost' 

def run(self): 
    serverClass = BaseHTTPServer.HTTPServer 
    server = "xyz.c1589.com"    # Some random server 
    h = handler(server) 
    server = serverClass((self.host,self.port),h) 
    print "Starting server!!" 
    try: 
     server.serve_forever() 
    except: 
     print "Error Creating Server" 
     server.server_close() 


if __name__ == '__main__': 
server().run() 
+0

'' 'BaseHTTPServer.BaseHTTPRequestHandler .__ init__''' принимает три аргумента, и подкласс требует одного, поэтому при создании' '' 'handler''' вам нужно передать четыре аргумента. – wwii

+0

Когда вы получаете сообщение об ошибке, вы должны опубликовать полный ответ в своем вопросе. – wwii

ответ

1

Подпись BaseHTTPRequestHandler(request, client_address, server). Вместе с self он составляет четыре аргумента. Вы в __init__() предоставляется только один

0

BaseHTTPServer.BaseHTTPRequestHandler.__init__(self)

вам нужно поставить арг для вызова к основанию __init__ там.

Смежные вопросы