To organize Python files in your project you can or better should place them in directories to better manage and find them.
I've set up my sample class (
dog.py) which looks like this:
class dog: '''class from https://docs.python.org/3/tutorial/classes.html''' def __init__(self, name): self.name = name self.tricks =  # creates a new empty list for each dog def add_trick(self, trick): self.tricks.append(trick)
app.py file which looks like this:
import dog dogInstance = dog.dog("Alfred") dogInstance.add_trick("Trick1") for dogTrick in dogInstance.tricks: print(dogTrick)
The whole folder has now 2 files.
Creating a package
Let's move our
dog.py file to a new folder named
animals, because later we possible add a
cat or any other animal.
Now our linter&compiler tells us that he can't find the module
To fix this we need to create an empty files named
__init__.py in the
Python will thread this folder as a package (cotainer for one or more modules) and the file
dog.py as a module.
In file system terms this means:
- package = folder
- module = file
Fixing the import
Our code in
app.py still doesn't work because the import is broken.
To fix this we need to change the import from
import dog to
import animals.dog, because the dog module is now in the animals package.
import animals.dog dogInstance = animals.dog.dog("Alfred") dogInstance.add_trick("Trick1") for dogTrick in dogInstance.tricks: print(dogTrick)
animals.dog.dog isn't very nice to write and doesn't look good.
To change this we can modify the import statement to this:
from animals.dog import dog This tells python to only import the class
dog from the module
dog in package
app.py file now looks like this:
from animals.dog import dog dogInstance = dog("Alfred") dogInstance.add_trick("Trick1") for dogTrick in dogInstance.tricks: print(dogTrick)
Very nice! What do you think?