(original) (raw)

I'm convinced by the new section explaining why a single value is better than a namespace. Nonetheless, it would feel more "Pythonic" to me to create a property \`ContextVariable.val\` whose getter and setter was \`.lookup()\` and \`.set()\` (or maybe \`.\_lookup()\` and \`.\_set()\`).

Lookup might require a more complex call signature in rare cases, but the large majority of the time it would simply be \`var.val\`, and that should be the preferred API IMO. That provides a nice parallel between \`var.name\` and \`var.val\` also.

On Sat, Aug 26, 2017 at 11:22 AM, Barry Warsaw <barry@python.org> wrote:
On Aug 26, 2017, at 14:15, Yury Selivanov <yselivanov.ml@gmail.com> wrote:
\>
\> Elvis just added it:
\> https://www.python.org/dev/peps/pep-0550/#replication-of-threading-local-interface

Thanks, that’s exactly what I was looking for. Great summary of the issue.
>
\>> That said, if we have to use method lookup, then I agree that \`.get()\` is a better choice than \`.lookup()\`. But in that case, would it be possible to add an optional \`default=None\` argument so that you can specify a marker object for a missing value? I worry that None might be a valid value in some cases, but that currently can’t be distinguished from “missing”.
\>
\> Nathaniel has a use case where he needs to know if the value is in the
\> topmost LC or not.
\>
\> One way to address that need is to have the following signature for lookup():
\>
\> lookup(\*, default=None, traverse=True)
\>
\> IMO "lookup" is a slightly better name in this particular context.

Given that signature (which +1), I agree. You could add keywords for debugging lookup fairly easily too.

Cheers,
\-Barry


\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: https://mail.python.org/mailman/options/python-dev/mertz%40gnosis.cx




--
Keeping medicines from the bloodstreams of the sick; food
from the bellies of the hungry; books from the hands of the
uneducated; technology from the underdeveloped; and putting
advocates of freedom in prisons. Intellectual property is
to the 21st century what the slave trade was to the 16th.