[Python-ideas] Enums

MRAB python at mrabarnett.plus.com
Thu Jul 28 15:52:36 CEST 2011


On 28/07/2011 04:57, Nick Coghlan wrote:
> On Thu, Jul 28, 2011 at 12:21 PM, Guido van Rossum<guido at python.org>  wrote:
>> I wish I could write
>>
>>   red = Enum(1)
>>
>> and it made the following true:
>>
>>   assert red == 1
>>   assert isinstance(red, int)  # a subclass
>>   assert str(red) == 'red'
>>
>> But we'd first need a non-hacky way for Enum() to know that it is
>> being assigned to something named 'red'. I have a few other use cases
>> for that as well, e.g. a Property class for App Engine that doesn't
>> require a metaclass to patch up the value.
>
> Yeah, a similar discussion came up in the context of defining
> namedtuple instances a while back (I don't recall if you were part of
> that conversation or not - IIRC, the thread started off on the topic
> of assignment decorators and ended up wandering down this road at some
> point)
>
> Most proposed solutions relied on some form of abuse of the def
> statement to define arbitrary objects that knew their own name. For
> example:
>
>    def red from namedvalue(1)  # Rather unnatural phrasing
>    def red as namedvalue(1)  # Phrasing is natural, but the name is on
> the wrong side of the 'as'
>    def red = namedvalue(1)  # Simple assignment may not suggest enough magic
>    def as red = namedvalue(1)  # Syntax soup!
>    as red def namedvalue(1)  # Just throw keywords at the screen and
> see if anything sticks
>    red def= namedvalue(1)  # An alternative inspired by augmented assignment
>    def red<<  namedvalue(1) # Arbitrary but suggestive
>
[snip]
You missed out:

     def red is namedvalue(1)



More information about the Python-ideas mailing list