<div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">>> In a real module, you'd probably want to be more thorough about emulating a __dict__ dictionary though by adding item() and keys() etc.<br>

><br>
> It's impossible in general.<br>
><br>
> class A:<br>
>    def __getattr__(self, name):<br>
>        return len(name)<br>
<br>
<br>
</div>>>> class proxy:<br>
...   def __init__(self, orig):<br>
...     self._orig = orig<br>
...   def __getitem__(self, attr):<br>
...     return getattr(self._orig,attr)<br>
...<br>
>>> class A:<br>
...   def __getattr__(self, name):<br>
...     return len(name)<br>
...<br>
>>> a = A()<br>
>>> proxy(a)['hello']<br>
5<br>
>>><br>
<br>
Extending the proxy class to include setting, deleting, and various<br>
corner cases, is left as an exercise for the reader :-)</blockquote><div><br></div><div>>>> proxy(a).keys()</div><div>?!?</div></div></div>