On Tue, Dec 03, 2002 at 03:24:59PM +0100, Samuele Pedroni wrote: > Why then only import * should have a user-defined behavior? > > What about > > from module import x > > if the importing module has already a defined x then maybe that should be also > under user control? > > I'm surely missing something. I don't have a good sense of why this feature is desirable, I was just suggesting how David's request might be implemented without introducing new __special__ names. If it was desired that 'from module import x' be able to use the special behavior, then I'd suggest leaving __all__ as it is now, and having __export__, with the default behaving about like this: def __export__(exporter, importer, names): for name in names: setattr(importer, name, getattr(exporter, name)) and David's __export__ being about like this: def __export__(exporter, importer, names): for name in names: attr = getattr(exporter, name) if isinstance(attr, Multimethod): merge_one_multimethod(exporter, name, attr) else: setattr(exporter, name, attr) maybe __export__ should be called once per name, or maybe a special value should be passed for * (instead of __all__) Of course, 'from m import *' has that "do with me what you will" feeling to it, while 'from m import x' doesn't. Jeff
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4