<div class="gmail_quote">On Thu, Mar 24, 2011 at 06:40, Jameson Quinn <span dir="ltr">&lt;<a href="mailto:jameson.quinn@gmail.com">jameson.quinn@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
&quot;class attrdict&quot; is a perennial dead-end for intermediate pythonistas who want to save 3 characters/5 keystrokes for item access. Other languages such as javascript allow &quot;somedict.foo&quot; to mean the same as &quot;somedict[&#39;foo&#39;]&quot;, so why not python? Well, there are a number of reasons why not, beginning with all the magic method names in python.<div>


<br></div><div>But saving keystrokes is still a reasonable goal.</div></blockquote><div><br></div><div>Code is read far more often than it is written, so readability tends to count more than most other metrics.</div><div>
<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div>So what about a compromise? Allow &quot;somedict..foo&quot;, with two dots, to take that place. It still saves 2 characters (often 4 keystrokes; and I find even &#39;, &quot;[&quot;, or &quot;]&quot; harder to type than &quot;.&quot;).</div>
</blockquote><div><br></div><div>I don&#39;t see the benefit, but maybe it&#39;ll save a few bytes in file size. Anyone reviewing your code now has to think &quot;does this need one or two dots?&quot;</div><div><br></div>
<div>Anyways, why not just do something like this:</div><div><br></div><div>class AttrDict(dict):</div><div>    def __getattr__(self, attr):</div><div>        return super(AttrDict, self).__getitem__(attr) </div><div><br>
</div><div><div>&gt;&gt;&gt; d = AttrDict()</div><div>&gt;&gt;&gt; d[&quot;a&quot;] = 1</div><div>&gt;&gt;&gt; d.a</div><div>1</div></div></div>