TypeError: 'module' object is not callable
Forafo San
ppv.grps at gmail.com
Thu Aug 11 20:56:34 EDT 2011
On Thursday, August 11, 2011 8:22:20 PM UTC-4, MRAB wrote:
> On 11/08/2011 23:43, Forafo San wrote:
> > I wrote a class, Univariate, that resides in a directory that is in my PYTHONPATH. I'm able to import that class into a *.py file. However when I try to instantiate an object with that class like:
> >
> > x = Univariate(a) # a is a list that is expected by the Univariate class
> >
> > python raises the TypeError: 'module' object is not callable. If I embed the code of the Univariate class in my *.py file, there is no problem. Also, when the class is imported and I do a
> >
> > print dir(Univariate)
> >
> > it does not print all the methods that are in the class, while if the class code appears in my *.py file, all the methods are available and a list with the correct methods are printed.
> >
> > What gives?
> >
> I think you mat be confusing the class with the module.
>
> When you write:
>
> import Univariate
>
> you're importing the module.
>
> If the module is called "Univariate" and the class within the module is
> called "Univariate" then you should either write:
>
> import Univariate
> x = Univariate.Univariate(a) # the class Univariate in the module
> Univariate
>
> or:
>
> from Univariate import Univariate
> x = Univariate(a)
>
> Incidentally, it's recommended that module names use lowercase, so that
> would be:
>
> import univariate
> x = univariate.Univariate(a)
>
> or:
>
> from univariate import Univariate
Thank you all for your replies. When I do a
from Univariate import Univariate
the TypeError disappears and everything is fine. Clearly this was an error that a newbie such as myself is likely to make because of little experience with Python. However, this isn't something I'm likely to forget.
I will also adopt the style recommendations. Thanks, again.
More information about the Python-list
mailing list