pre-PEP: Suite-Based Keywords - syntax proposal

Bengt Richter bokr at oz.net
Sun Apr 17 04:46:23 EDT 2005


On 16 Apr 2005 23:43:03 -0700, "Kay Schluehr" <kay.schluehr at gmx.net> wrote:

>
>Robert Brewer wrote:
>> Bengt Richter wrote:
>> > The '::' unary suite operator should return an ordered dict
>> > subtype representing the bindings
>>
>> Why ordered?
>
>Because You can't otherwise guarantee to feed optional argument
>parameters in a correct way.
>
>Example:
>
>x = property(*seq) where:
>            seq = (item[1] for item in ::
>                def get_x():
>                    return self.__x
>                def set_x(value):
>                    self.__x = value
>                del_x = None
>                doc   = "I'm the 'x' property." )
>
>This statement would not work if the result of '::' ( considered as an
>"ordered dict" ) would return simply a dict because the order of the
>input parameters matters.
>
Exactly. Except the above example is from the day-old-bread items-tuple-returning version of :: ;-)
And with an ordered dict subtype there is no need for the generator expression either,
since there is a values method for dicts (which in the subtype would preserve order). E.g.,

 x = property(*seq) where:
             seq = (::
                 def get_x():
                     return self.__x
                 def set_x(value):
                     self.__x = value
                 del_x = None
                 doc   = "I'm the 'x' property." ).values())

Or more directly:

 x = property(*(::
                 def get_x():
                     return self.__x
                 def set_x(value):
                     self.__x = value
                 del_x = None
                 doc   = "I'm the 'x' property." ).values())

Or eliminating parens by using dedent to end the :: suite:

 x = property(*::
                 def get_x():
                     return self.__x
                 def set_x(value):
                     self.__x = value
                 del_x = None
                 doc   = "I'm the 'x' property."
              .values())

Regards,
Bengt Richter



More information about the Python-list mailing list