Why can't I run this test class?

Kermit Mei kermit.mei at gmail.com
Fri Sep 11 04:01:44 EDT 2009


On Fri, 2009-09-11 at 00:43 -0700, Chris Rebert wrote:
> On Fri, Sep 11, 2009 at 12:40 AM, Kermit Mei <kermit.mei at gmail.com> wrote:
> > On Fri, 2009-09-11 at 00:33 -0700, Chris Rebert wrote:
> >> On Fri, Sep 11, 2009 at 12:30 AM, Kermit Mei <kermit.mei at gmail.com> wrote:
> >> > Dear all,
> >> >    I'm a newbie for python, and I write a program to test how to
> >> > implement a class:
> >> >
> >> > #!/usr/bin/env
> >> > python
> >> >
> >> > class Test:
> >> >    'My Test class'
> >> >    def __init__(self):
> >> >        self.arg1 = 1
> >> >
> >> >    def first(self):
> >> >        return self.arg1
> >> >
> >> > t1 = Test
> >>
> >> You missed the parentheses to call the constructor. That line should be:
> >>
> >> t1 = Test()
> >>
> >> Cheers,
> >> Chris
> >
> >
> > Yes, that can run. But If I put the following code into Test.py :
> > #!/usr/bin/env python                                               |>>>
> >                                                                    |
> > class Test:                                                         |
> >    'My Test class'                                                 |
> >    def __init__(self):                                             |
> >        self.arg1 = 1                                               |
> >                                                                    |
> >    def first(self):                                                |
> >        return self.arg1                                            |
> >                                                                    |
> >    def setFirst(self,value = 5):                                   |
> >        self.arg1 = value
> >
> > But when I want to run it as a module, something also be wrong:
> >
> > $ python
> > Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
> > [GCC 4.3.3] on linux2
> > Type "help", "copyright", "credits" or "license" for more information.
> >>>> import Test
> >>>> t1 = Test()
> > Traceback (most recent call last):
> >  File "<stdin>", line 1, in <module>
> > TypeError: 'module' object is not callable
> 
> You've imported the module `Test`, whose name is determined by the
> filename (Test.py).
> To access the class of the same name (`Test`) that is defined in the
> module, you need to use the dot operator:
> 
> >>>> import Test
> >>>> t1 = Test.Test()
> 
> You should probably use different names for the module/file and the
> class to avoid confusion.
> Unlike Java, Python does not observe a direct correspondence between
> filenames and classes.
> 
> Cheers,
> Chris
> --

Oh, yep! 
Thanks, Cheers.

Can you tell me how can I write __init__.py for modules:

I have a directory like this:
$ tree
.
`-- main
    |-- MyTestModules
    |   |-- Test1.py
    |   `-- Test2.py
    `-- main.py

2 directories, 3 files


In main.py, I want to run the following code:

#!/usr/bin/env python

import MyTestModules

t1 = Test1()
t2 = Test2()

print t1.first()
print t2.first()

###################################
The classes Test1 and Test2 just be similar with the Test that I showed
before. To run main.py correct, how can I orgnize the code under
directory MyTestModules. (May need a __init__.py file under
MyTestModules, but I don't know how to write it)


Thank you,very much!
Regards
Kermit








More information about the Python-list mailing list