Message117961
According to the Format String Syntax section [1], attribute_name must be an identifier. However, the parser does not catch a violation of this rule and happily passes non-indentifier strings to getattribute:
>>> class X:
... def __getattribute__(self, a): return 'foo'
...
>>> '{.$#@}'.format(X())
'foo'
If this is a desirable feature, I think it should be clearly documented because in some cases, for example when formatted objects are proxies to database entries, passing arbitrary strings to __getattribute__ may be wasteful at best and a security hole at worst.
[1] http://docs.python.org/dev/py3k/library/string.html#format-string-syntax |
|
Date |
User |
Action |
Args |
2010-10-04 16:24:06 | belopolsky | set | recipients:
+ belopolsky |
2010-10-04 16:24:06 | belopolsky | set | messageid: <1286209446.65.0.698670214161.issue10021@psf.upfronthosting.co.za> |
2010-10-04 16:24:04 | belopolsky | link | issue10021 messages |
2010-10-04 16:24:03 | belopolsky | create | |
|