I have a use case where I'm running BaseHTTPServer.HTTPServer, and I want to configure the request handler with some context. I've gotten the code to work, but it feels overly heavy. I am wondering if anybody could suggest an easier idiom for this.
This is a brief sketch of the code: class MyHandler(BaseHTTPRequestHandler): def __init__(self, context, *args): self.context = context BaseHTTPRequestHandler.__init__(self, *args) def do_GET(self): // self.context will be available here context = { .... } def handler(*args): MyHandler(context, *args) server = HTTPServer(('', port), handler) server.serve_forever() Basically, it takes five lines of code just to pass context into the handler: def handler(*args): MyHandler(context, *args) def __init__(self, context, *args): self.context = context BaseHTTPRequestHandler.__init__(self, *args) Typically the second argument to HTTPServer is a subclass of BaseHTTPRequestHandler, but I pass in "handler" instead, which instantiates a new instance of MyHandler with the context from the enclosing scope. At first I tried to say "MyHandler(*args).context = context", but that assignment was too late, because BaseHTTPRequestHandler.__init__ does a lot of stuff during the construction phase. That's what forced me to write my own custom __init__ as well. I hope there's enough info here to understand what I'm trying to achieve, but if it helps to see my code in more context, you can see it here: https://gist.github.com/2173618 Thanks. -- http://mail.python.org/mailman/listinfo/python-list