module with __call__ defined is not callable?

Delaney, Timothy (Tim) tdelaney at avaya.com
Tue Feb 7 21:58:13 EST 2006


adam johnson wrote:

> Hi All.
> I was wondering why defining a __call__ attribute for a module
> doesn't make it actually callable. 

For the same reason that the following doesn't work

    class A (object):

        def __init__(self):
            self.__call__ = A.hello

        def hello (self):
            print 'Hello, world!'

    a = A()
    a()

    Traceback (most recent call last):
      File "D:\Python\modules\testclasscall.py", line 10, in ?
        a()
    TypeError: 'A' object is not callable

The __call__ attribute must be defined on the class (or type) - not on
the instance. A module is an instance of <type 'module'>.

Tim Delaney



More information about the Python-list mailing list