Torsten Mohr a écrit :
Hi,

i have a question on how to structure a package best, would be great if
anybody could give me some hint on this:

Assuming i have a base class GraphicObject and derived from that some
classes like Square, Circle, ...

It looks natural to me to write in a code that uses the package:

import graphic
import graphic.square
import graphic.circle

That way i'd have to structure the code like this:

graphic/
  __init__,py  (GraphicObject)
  square.py (Square)
  circle.py (Circle)

Does that make sense like this?

Are there better ways to structure things in Python?

<disclaimer content="just-my-2-cents-really">

Well... Unless your Square and Circle classes are monster classes, or you have many many GraphicObject subclasses - that is, unless you need to do so for source-file size management -, there's not much reason to use a Java-like "one class per file" scheme[1], and it's not the common way to organize Python code.

Now if you do have (or just really want - well, it's your code, isn't it ?-)) to use one-class-per-file, you may be better moving the base GraphicObject class in a base.py module. This would be easier to understand IMHO, and should make internal imports easier to manage.


[1] A package can act as a facade for submodules/subpackages (using the __init__.py to expose submodules/subpackages at the top level), so it's not a problem to refactor a single module into a package...


One thing that bothers me is that when i write in circly.py something like
"import graphic", then i can't have the test code for the Circle within
circle.py, at least it looks to me like this.

Depends on how you write your test code, but as far as I'm concerned, I prefer to separate source from tests (and use a unittesting framework).

</disclaimer>
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to