[Python-ideas] TypeError: 'module' object is not callable
Steven D'Aprano
steve at pearwood.info
Fri Feb 20 18:52:14 CET 2009
Christian Heimes wrote:
> Ralf W. Grosse-Kunstleve wrote:
>> I see there have been discussion about module __call__ about three years ago:
>>
>> http://mail.python.org/pipermail/python-list/2006-February/thread.html#366176
>>
>> Is there an existing pronouncement on this subject?
>>
>> __call__ would help avoiding strange things like from StringIO import StringIO
>> or having to come up with silly names like run, driver, manager, etc.
>>
>> Ideally, __call__ could be either a function or class.
>>
>> I imagine, nothing special, except that a module object looks for __call__ instead
>> of producing a type error.
>
>
> It's technically not possible without jumping through several loops.
> Magic methods are looked up on the class. Modules are instances of the
> ModuleType class.
It shouldn't be that difficult to implement. Something like:
class ModuleType: # probably implemented in C?
def __call__(self, *args):
return self.__dict__['__call__'](*args)
The question is, should it be implemented?
--
Steven
More information about the Python-ideas
mailing list