In <pan.2009.09.16.22.09...@remove.this.cybersource.com.au> Steven D'Aprano 
<ste...@remove.this.cybersource.com.au> writes:

>On Wed, 16 Sep 2009 21:56:09 +0000, kj wrote:

>...
>> I thought at first that I could achieve this by overriding __getattr__:
>> 
>>     def __getattr__(self, attribute):
>>         return self.fh.__getattr__(attribute)
>> 
>> But to my surprise this did not work too well.  For example, if I use a
>> GzipFile object as the argument to MyFile, the iterator of the resulting
>> object works as expected, but if I attempt to access its closed
>> attribute I get the error
>> 
>> AttributeError: GzipFile instance has no attribute '__getattr__'
>> 
>> And it doesn't have __getattribute__ either.  (And here I'd been
>> thinking that __getattr__ and __getattribute__ were pretty much
>> universal...  Clearly not!)
>> 
>> Is there a standard idiom that I'm missing for doing this sort of thing?

>Instead of:

>x.__getattr__('name')

>write this:

>getattr(x, 'name')

This did the trick.

>Also, do a search for "automatic delegation python", or just look at Alex 
>Martelli's cookbook recipe:

>http://code.activestate.com/recipes/52295/

That was instructive.  Thanks!

kj
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to