[Python-Dev] sys.implementation
Eric Snow
ericsnowcurrently at gmail.com
Sat May 12 19:50:10 CEST 2012
On Sat, May 12, 2012 at 6:04 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:
> On Sat, May 12, 2012 at 12:40 PM, Eric Snow <ericsnowcurrently at gmail.com> wrote:
>> If anyone has strong feelings for item-access over attribute-access,
>> please elaborate. I'm just not seeing it as that important and would
>> rather finish up the PEP as simply as possible.
>
> I object to adding a new type to the stdlib just for this PEP.
And I agree with you. :) The only constraint is that it be an object
with attribute access. That could be a named tuple, a module, an
uninstantiated class, or whatever. A new type is not needed. If it's
iterable or not is irrelevant with regards to the PEP. For the
implementation I'd like it to have a good repr too, but even that's
not part of the proposal.
I've got the latest version of the PEP up now. It pares down the type
discussion and eliminates "metadata". I figure it's good enough for
what we need, and I've put adequate(?) warning that people shouldn't
mess with it (consenting adults, etc.). Let me know what you think.
> Since
> iterating over the keys is significantly more useful than iterating
> over the values, that suggests a dictionary as the most appropriate
> type.
>
> If someone *really* wants a quick way to get dotted access to the
> contents of dictionary:
>
>>>> data = dict(a=1, b=2, c=3)
>>>> ns = type('', (), data)
>>>> ns.a
> 1
>>>> ns.b
> 2
>>>> ns.c
> 3
That's pretty cool. As a counter example, given a normal (dict-based)
object you can use vars() to turn it into a dict:
>>> data = SomeClass(a=1, b=2, c=3)
>>> ns = vars(data)
>>> ns['a']
1
>>> ns['b']
2
>>> ns['c']
3
I'll grant that it doesn't work for some objects (like named tuples),
but for sys.implementation I don't think it matters either way.
-eric
More information about the Python-Dev
mailing list