I am a Java programmer dabbling in Python for the first time. Mostly, the transition has been pretty smooth, but this week something stumped me. Please forgive me if the answer to this is completely obvious - I've read van Rossum's tutorial and can't figure it out.
I am working on a Python project composed of one main module and several smaller helper modules. Each module is currently in its own file, which (I believe) is the convention Python uses. The main module is called MainProgram.py and one of the helper modules is called Helper.py. MainProgram.py has to import a method called somefunc() from Helper.py.
Now, one of the conventions I use when designing OO systems in Java is this: all of my helper classes have diagnostic code in their main methods, so that when you invoke the class's main from the command line, you get to see whether the methods of that class work the way they are supposed to. Unfortunately, Python modules have no main method to speak of, so I did what I thought was the next best thing. In my Helper module:
#!/usr/bin/python2.3 # Helper.py def somefunc(a, b, c): # code for this function # Code that tests somefunc somefunc('A', 'B', 'C')
The idea is that somefunc() executes with arbitrary arguments of 'A', 'B', and 'C' when Helper.py is invoked on its own. Then, in the MainProgram module:
#!/usr/bin/python2.3 # MainProgram.py from Helper import somefunc somefunc('Actual', 'data', 'here') # Other code which does other stuff
Right? Unfortunately, the import statement also triggers that diagnostic invocation of somefunc() at the bottom of Helper.py - this is neither trivial nor good in the context of my actual project. It's also very confusing, since you'd think that importing a method from a module wouldn't call for any execution at all.
Can anyone tell me if there's a way to do what I'm describing in Python? Again, I'm sorry if this is a total n00b question - that's what I am at the moment.