My module is all in one big file that is getting hard to maintain. What is the standard way of breaking things up?
I have one module in a file my_module.py, which I import like this:
import my_module
“my_module” will soon be a thousand lines, which is pushing the limits of my ability to keep everything straight. I was thinking of adding files my_module_base.py, my_module_blah.py, etc. And then, replacing my_module.py with
from my_module_base import *
from my_module_blah import *
# etc.
Then, the user code does not need to change:
import my_module # still works...
Is this the standard pattern?
It depends on what your module is doing actually. Usually it is always a good idea to make your module a directory with an ‘
__init__.py'file inside. So you would first transform youryour_module.pyto something likeyour_module/__init__.py.After that you continue according to your business logic. Here some examples:
do you have utility functions which are not directly used by the modules API put them in some file called
utils.pydo you have some classes dealing with the database or representing your database models put them in
models.pydo you have some internal configuration it might make sense to put it into some extra file called
settings.pyorconfig.pyThese are just examples (a little bit stolen from the Django approach of reusable apps ^^). As said, it depends a lot what your module does. If it is still too big afterwards it also makes sense to create submodules (as subdirectories with their own
__init__.py).