I’m learning Python and I have been playing around with packages. I wanted to know the best way to define classes in packages. It seems that the only way to define classes in a package is to define them in the __init__.py of that package. Coming from Java, I’d kind of like to define individual files for my classes. Is this a recommended practice?
I’d like to have my directory look somewhat like this:
recursor/
__init__.py
RecursionException.py
RecursionResult.py
Recursor.py
So I could refer to my classes as recursor.Recursor, recursor.RecursionException, and recursor.RecursionResult. Is this doable or recommended in Python?
Go ahead and define your classes in separate modules. Then make
__init__.pydo something like this:That will import each class into the package’s root namespace, so calling code can refer to
recursor.Recursorinstead ofrecursor.Recursor.Recursor.I feel the need to echo some of the other comments here, though: Python is not Java. Rather than creating a new module for every class under the sun, I suggest grouping closely related classes into a single module. It’s easier to understand your code that way, and calling code won’t need a bazillion imports.