Here is my solution. There may be better ways to structure this, but it works!
Customization (Python 2 and 3):
class ContextDictBase(type): @staticmethod def __newnew(cls, name, bases, attrs): attrs.pop('__module__', None) return attrs def __new__(cls, name, bases, attrs): ContextDictBase.__new__ = staticmethod(ContextDictBase.__newnew) return super(ContextDictBase, cls).__new__(cls, name, bases, attrs)
Python 2:
class ContextDict(object): __metaclass__ = ContextDictBase
Python 3:
class ContextDict(object, metaclass=ContextDictBase): pass
And then use it:
class context(ContextDict): a = 1 b = 2 >>> context {'a': 1, 'b': 2}
forivall
source share