<div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)"> This has been proposed and discussed and even implemented many</span><br style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">
<span style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:13px;background-color:rgb(255,255,255)">times on this list and others.</span> <br></blockquote><div>I can find this question on SO</div><div><a href="http://stackoverflow.com/questions/4984647/accessing-dict-keys-like-an-attribute-in-python">http://stackoverflow.com/questions/4984647/accessing-dict-keys-like-an-attribute-in-python</a></div>
<div>which is basically answered with this solution</div><div><pre class="default prettyprint" style="margin-top:0px;margin-bottom:10px;padding:5px;border:0px;font-size:14px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;overflow:auto;width:auto;max-height:600px;line-height:18px">
<code style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif"><span class="kwd" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(0,0,139)">class</span><span class="pln" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> </span><span class="typ" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent;color:rgb(43,145,175)">AttributeDict</span><span class="pun" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">(</span><span class="pln" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">dict</span><span class="pun" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">):</span><span class="pln" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> <br>
    __getattr__ </span><span class="pun" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span class="pln" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> dict</span><span class="pun" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">.</span><span class="pln" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">__getitem__<br>
    __setattr__ </span><span class="pun" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">=</span><span class="pln" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"> dict</span><span class="pun" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">.</span><span class="pln" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent">__setitem__</span></code></pre>
<pre class="default prettyprint" style="margin-top:0px;margin-bottom:10px;padding:5px;border:0px;font-size:14px;vertical-align:baseline;background-color:rgb(238,238,238);font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif;overflow:auto;width:auto;max-height:600px;line-height:18px">
<code style="margin:0px;padding:0px;border:0px;vertical-align:baseline;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,serif"><span class="pln" style="margin:0px;padding:0px;border:0px;vertical-align:baseline;background-color:transparent"><br>
</span></code></pre></div><div>but this does not allow recursive access, you would need to first convert all nested dictionaries to AttributeDict.</div><div>a.b.c.d = 2 # fail</div><div>a.b = dict(c=3)</div><div>a.b.c=4 # fail</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">> I would like to have python guys advices on how one could optimize this.<br>
<br>
Use C code and slots.<br></blockquote><div>I tried adding __slots__= [], to my class, but my benchmarks do not show significant changes.</div><div> </div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

if you're proposing a new module for the stdlib, one of the (unstated?)<br>
requirements is that it be in regular use by a fairly large audience for<br>
a while.<br></blockquote><div>I was talking about escalading to python-dev as a way to hit more expertize, but it looks like this one is already </div><div><br></div></div>