Michael Crute <mcr...@gmail.com> writes:

> Is it bad form (i.e. non-pythonic) to have code in your __init__.py
> files?

No, it's good form, but *only* for code that truly pertains to the
entire package. Anything that can reasonably be in a module other than
‘__init__’, should be.

That leaves the following things suitable for code in ‘__init__’,
OTTOMH:

* Metadata attributes for the package (e.g. version string).

* Docstring for the package

* ‘from foo import bar’ to present attributes of the package that are
  actually implemented in a module, which should be just about
  everything in the package.

> If you object to code in __init__.py why

I object only to code that isn't clearly “relates to the entire
package and can't reasonably be implemented in a separate module”.

If you're going to the effort of making a package (rather than just
coding the namespace as a single module), then the implementation
should be in modules other than ‘__init__’ to allow easier re-use,
re-factoring, and testing.

-- 
 \      “When I wake up in the morning, I just can't get started until |
  `\     I've had that first, piping hot pot of coffee. Oh, I've tried |
_o__)                                    other enemas...” —Emo Philips |
Ben Finney
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to