Classes as namespaces?

Gregory Ewing greg.ewing at
Sun Mar 28 00:40:07 CET 2010

kj wrote:
> What's the word on using "classes as namespaces"?

My only concern would be that classes do magical things with certain
types when you retrieve them as attributes (e.g. functions, property
descriptors), so you can't use one as a completely general purpose
transparent container. But for enum constants and the like this
isn't a problem.

If you're up for a bit of hackery, the following code tricks the
class statement into producing a module instead of a class:

from types import ModuleType

class MetaNamespace(ModuleType):

   def __init__(self, name, bases, dict):
     ModuleType.__init__(self, name)
     self.__file__ = __file__

Namespace = MetaNamespace.__new__(MetaNamespace)

class Foo(Namespace):

   ford = 42
   arthur = 88

print Foo
print Foo.__dict__


More information about the Python-list mailing list