title: Organizing Python classes in modules and/or packages
body: <p>I like the Java convention of having one public class per file, even if there are sometimes good reasons to put more than one public class into a single file. In my case I have alternative implementations of the same interface. But if I would place them into separate files, I'd have redundant names in the import statements (or misleading module names):</p>
  
  <pre><code>import someConverter.SomeConverter
  </code></pre>
  
  <p>whereas <code>someConverter</code> would be the file (and module) name and <code>SomeConverter</code> the class name. This looks pretty inelegant to me. To put all alternative classes into one file would lead to a more meaningful import statement:</p>
  
  <pre><code>import converters.SomeConverter
  </code></pre>
  
  <p>But I fear that the files become pretty large, if I put all related classes into a single module file. What is the Python best practise here? Is one class per file unusual? </p>