Marco Pesenti Gritti wrote:
Eeeeh here comes my hate for python imports. What I'd really want in the code is:

from sugar import presence

ps = presence.PresenceService()

Now, is there a way to get that without stuffing all the presence service in presence.py. Or more in general can you elaborate on a way to organize code in python that doesn't suck :) I guess we have been trying to emulate java like packaging with generally one class per file, but that doesn't seem to play well with python imports.

Anyway it would be great to solve this in a good way. I hate what we have currently.

You can put everything in presence/__init__.py. I don't like using __init__.py this way, though; it's a little quirky as a file (ImportError's in it are swallowed), and by itself it has a rather ambiguous name. So I typically put something like this in there:

  # presence/__init__.py
  from presenceservice import PresenceService

Then you can do "from presence import PresenceService". When you then try to track down PresenceService you'll have a little indirection, but usually it's not too distracting.

One downside is that there is then no way to import (and hence load) some of the code without importing all of it. I.e., if you wanted access to something in presence/ but not PresenceService, you would end up implicitly importing PresenceService whether you wanted to or not.


--
Ian Bicking | [EMAIL PROTECTED] | http://blog.ianbicking.org
_______________________________________________
Sugar mailing list
[email protected]
http://mailman.laptop.org/mailman/listinfo/sugar

Reply via email to