Or if the context object needs different behavior, stick the "return value"
in an attribute like restaurant_choices.data.

On Sun, Oct 13, 2019, 2:56 PM David Mertz <me...@gnosis.cx> wrote:

> Why not just:
>
>     with build_choices('Restaurant') as restaurant_choices :
>         ...
>
>     print(restaurant_choices)
>
> On Sun, Oct 13, 2019, 2:49 PM Steve Jorgensen <ste...@stevej.name> wrote:
>
>> Here's a more fleshed-out example of the kind of usage I have in mind.
>> Note that this does not require `with` to have any affect on variable
>> scope.  The object returned from the context manager's __enter__ method is
>> all the context that is needed or wanted for this pattern.
>>
>>     restaurant_choices = with build_choices('Restaurant') as cb:
>>         # Get of nonexistent attr auto-generates matching entry.
>>         cb.BURGER_KING
>>         cb.FIVE_GUYS
>>         # Returned value is a ChoiceItem that implements __mod__ to
>> return a
>>         # new ChoiceItem instance w/ substituted label.
>>         cb.MCDONALDS %= "McDonald's"
>>
>>     print(restaurant_choices)
>>     # RestaurantChoices(
>>     #  (
>>     #   ('BURGER_KING', 'Burger King'),
>>     #   ('FIVE_GUYS', 'Five Guys'),
>>     #   ('MCDONALDS', "McDonald's")))
>>
>>     print(RestaurantChoices.BURGER_KING)
>>     # Prints 'BURGER_KING'
>>
>>     print(RestaurantChoices.value_labels['FIVE_GUYS'])
>>     # Prints 'Five Guys'
>> _______________________________________________
>> Python-ideas mailing list -- python-ideas@python.org
>> To unsubscribe send an email to python-ideas-le...@python.org
>> https://mail.python.org/mailman3/lists/python-ideas.python.org/
>> Message archived at
>> https://mail.python.org/archives/list/python-ideas@python.org/message/ZPZ47KHN7JWWCWF7UH4P2MYLK6XTRI6O/
>> Code of Conduct: http://python.org/psf/codeofconduct/
>>
>
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/BK7I7F6HAEYTXBNNWNV5SWIYX73YV3WD/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to