Multiple classes in a Python module


I’m very new to Python (I’m coming from a JAVA background) and I’m wondering if anyone could help me with some of the Python standards. Is it a normal or “proper” practice to put multiple class in a module? I have been working with Django and started with the tutorials and they place their database model classes in the same module. Is this something that is normally done or should I stick with 1 class per module? Is there a reason I would do one over the other?

Hope I’m being clear and not to generic. Thanks to everyone in advance!

Asked By: ralph



It is absolutely proper to do so. A module groups related functionality. If that functionality is implemented in several classes (e.g., Tree, Node, Leaf) then it is appropriate to place them together.

A module is more closely associated with a Java package than a Java class. You can also implement a module as a folder, named for the module, with an file inside (so Python can identify the module as such; the may also optionally include initialization code and lists of classes, functions, and sub-packages to export.)

Answered By: Jeff Ober

It is certainly a normal thing to do in Python. When and why you choose one over the other is partly a matter of taste, and partly convention.

If you’re still getting to know Python, and therefore its conventions, reading the style guide is well worth your time.

Answered By: acrosman

When in doubt, just look at Python’s standard libraries 🙂

For example, the standard calendar module contains 31 classes. So yes, it is ok.

Answered By: Vlad the Impala

Here is a useful rule of thumb from what I have seen of typical Java projects:

The bottom-most package in Java should be a file in Python

What does that mean?
If your Java project was organized:


Then your Python project should look like:

toplevel/ <-- put class Foo, Bar here <-- put class Baz, Qux here

Things to notice re: organization:

  • Do not use inner classes. Just put
    classes in the same module
  • By convention, things that start with _ are “private”
  • It’s OK to have “public variables”
Answered By: moshez

Think it this way.

In java what you write is a Class where in the case of Python, you write a module instead of a class. So a module can contain several classes.
Whenever you want to use a particular class, import the respective module first and then call the class to make objects.

Here’s an example. (This is a module named ‘Classes’)

class MyClass(object):  

    def greet(self):
        print("Hello World")

class MyNextClass(object):

    def greetAgain(self):
        print("Hello again")

Now I can import this module from anywhere I wish

import Classes

if __name__ == '__main__':



Answered By: Tharindu Rusira
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.