[Python-Dev] Definining properties - a use case for class decorators?

Nick Coghlan ncoghlan at gmail.com
Sun Oct 23 11:52:46 CEST 2005

Reinhold Birkenfeld wrote:
> Michele Simionato wrote:
>> As other explained, the syntax would not work for functions (and it is
>> not intended to).
>> A possible use case I had in mind is to define inlined modules to be
>> used as bunches
>> of attributes. For instance, I could define a module as
>> module m():
>>     a = 1
>>     b = 2
>> where 'module' would be the following function:
>> def module(name, args, dic):
>>     mod = types.ModuleType(name, dic.get('__doc__'))
>>     for k in dic: setattr(mod, k, dic[k])
>>     return mod
> Wow. This looks like an almighty tool. We can have modules, interfaces,
> classes and properties all the like with this.
> Guess a PEP would be nice.

Very nice indeed. I'd be more supportive if it was defined as a new statement 
such as "create" with the syntax:

   create TYPE NAME(ARGS):

The result would be roughly equivalent to:

   kwds = {}
   exec BLOCK in kwds
   NAME = TYPE(NAME, ARGS, kwds)

Such that the existing 'class' statement is equivalent to:

   create __metaclass__ NAME(ARGS):


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-Dev mailing list