Message41968
Logged In: YES
user_id=92689
Paul, this is the reason why the find_module() method
returns an object (and I guess now is a good time to explain
this <wink>; it also answers a question from Guido he asked
in private mail). zipimporter returns self, but you don't
have to do that: you can return anything with a
load_module() method. So all state you gather during
find_module() you can simply pack in a different object and
return that. Something like this
class MyHook:
...
def find_module(self, fullname):
info = self._find_module(fullname)
if info is None:
return None
return Loader(info)
class Loader:
def __init__(self, info):
self.info = info
def load_module(self, fullname):
...load module using self.info...
A good showcase for this pattern would be a wrapper for the
builtin import mechanism: it could stuff the (file,
filename, (suffix, mode, type)) tuple that imp.find_module()
returns in a loader object, whose load_module() method would
simply call imp.load_module() with that stuff. (I think such
a wrapper is needed in import.c if we want to properly
expose the new hooks in the imp module.)
You can see the importer protocol as a further abstraction
(and OO-ification) of the current
imp.find_module()/imp.load_module() calls. |
|
Date |
User |
Action |
Args |
2007-08-23 15:18:56 | admin | link | issue652586 messages |
2007-08-23 15:18:56 | admin | create | |
|