In python (and some other languages) I have learned, that the name of a class should be written in small letters except for the first letter, which should be a capital letter. Example:
class FooBar: ...
A class should go in a file, named the same as the class. In this example it would be a file
foobar.py. If I want to import the class
foo somewhere I have to do this:
from foobar import FooBar
This convention confuses me a little. My intuition tells me, that if the filename indicates a class, than it should be written with the first letter in capitals, too, like
FooBar.py. This don’t look pretty in file names. Perhaps someone could tell me what is the standard convention for this?
I hope I made my question understandable. 🙂
What you have presented is the standard convention.
Package and Module Names
Modules should have short, all-lowercase names. Underscores can
be used in the module name if it improves readability. Python packages
should also have short, all-lowercase names, although the use of underscores
Since module names are mapped to file names, and some file systems are
case insensitive and truncate long names, it is important that module
names be chosen to be fairly short — this won’t be a problem on Unix,
but it may be a problem when the code is transported to older Mac or
Windows versions, or DOS.
When an extension module written in C or C++ has an accompanying Python
module that provides a higher level (e.g. more object oriented)
interface, the C/C++ module has a leading underscore (e.g.
Almost without exception, class names use the CapWords convention.
Classes for internal use have a leading underscore in addition.
from configparser import ConfigParser
(which, incidentally, was ConfigParser in Python 2.x but changed to be lowercase in 3.x).
PEP 8 says:
Modules should have short, all-lowercase names. Underscores can be used
in the module name if it improves readability. Python packages should
also have short, all-lowercase names, although the use of underscores
I’ll also note that you shouldn’t necessarily have on only one class per file. Rather you should include related classes together in the same file. (Of course in some cases, having one class to a file works, but that is not always the case)