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. -- http://mail.python.org/mailman/listinfo/python-list