Why NOT only one class per file?

Fuzzyman fuzzyman at gmail.com
Wed Apr 4 18:50:08 EDT 2007


On Apr 4, 11:38 pm, "Klaas" <mike.kl... at gmail.com> wrote:
> On Apr 4, 2:52 pm, Thomas Krüger <newsgro... at nospam.nowire.org> wrote:
>
>
>
> > At first: if he really like it he can place every class in a single
> > file. But there are some reasons why Python "allows" you to place many
> > classes in one file:
>
> > - It's (a little bit) faster, no additional file system lookup is needed. ;)
> > - You can define a class in a class. Django, for example, uses this for
> > it's data models. If you do this you are forced to have multiple classes
> > in on file. Example:http://www.djangoproject.com/documentation/tutorial02/#make-the-poll-...
>
> That is somewhat specious: inner classes can be defined in java too.
>
> The main reason is that in java, classes are magical entities which
> correspond to one "exportable" unit of code.  Thus it makes a great
> deal of sense to limit to one _public_ class per file (java also
> allows unlimited private and package-private classes defined in a
> single file).
>
> If you want to define a bunch of utility functions in java, you write
> a file containing a single class with static methods.
>
> In python, classes do not have special status.  The exportable unit of
> code is a module, which, like public classes in java, can contain
> functions, static variables, and classes.  Similar to java, you are
> limited to a single module object per file (modulo extreme trickery).
>
> If you want to define a bunch of utility functions in python, you
> write a file containing a single module with functions.
>

So Python has one less level of enforced nesting. :-)

Fuzzyman
http://www.voidspace.org.uk/python/articles.shtml


> -Mike





More information about the Python-list mailing list