On Mar 26, 2010, at 10:49 AM, kj wrote:



What's the word on using "classes as namespaces"?  E.g.

class _cfg(object):
   spam = 1
   jambon = 3
   huevos = 2

breakfast = (_cfg.spam, _cfg.jambon, _cfg.huevos)


Granted, this is not the "intended use" for classes, and therefore
could be viewed as a misuse ("that's what dictionaries are for",
etc.).  But other than this somewhat academic objection[*], I really
can see no problem with using classes in this way.

And yet, I've come across online murky warnings against using
classes as "pseudo-namespaces".  Is there some problem that I'm
not seeing with this technique?

I hope it's not problematic; I use it all the time.

A few differences about the way I do it:
- I respect PEP 8 for the class name (CamelCaps)
- If the attributes are supposed to be constants, I capitalize the attributes - I often add NONE with a value of zero so that bool(MyClass.NONE) will evaluate to False and everything else will be True

Here's an example from my code:

class Apodization(object):
    """ Apodization constants """
    # These constants are arbitrary and may change.
    # However bool(NONE) is guaranteed to be False
    NONE = 0
    GAUSSIAN = 1
    LORENTZIAN = 2



Cheers
Philip

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to