[Python-Dev] New syntax for 'dynamic' attribute access (original) (raw)

Georg Brandl g.brandl at gmx.net
Tue Feb 13 09:33:49 CET 2007


Martin v. Löwis schrieb:

Ron Adam schrieb:

I think it's gets a bit awkward in some situations.

if bar->'%s_' % attr < -42: print 'Hello World'_ if bar.['%s' % attr] > -42: print 'Hello World' To me it's easier to parse the second one visually. Ah, precedence. It definitly should be a bracketed form, or else people always wonder what the precedence is, and add parenthesis anyway just to be on the safe side.

Indeed.

BTW, which of these would be correct

(a).[b] Yes. (you can write (a).b today)

(a.)[b] No. (you can't write (a.)b today)

a.[(b)] Yes. (you can write a[(b)] today)

a.([b]) No. (you can't write a([b]) today)

a . [ b ] Yes. (you can write a . b today)

In short, I'd just add a new form to Grammar's trailer:

trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' attrtrailer attrtrailer: '[' test ']' | NAME

This should be consistent and unsurprising.

and what is the semantics of

a.[42]

A TypeError, just as getattr(a, 42) would be.

I think I like the .[] form better, that being a +0 now.

Georg



More information about the Python-Dev mailing list