extend getattr()

Gerhard Häring gh at ghaering.de
Thu Jun 26 13:31:40 CEST 2008


Rotlaus wrote:
> Hello,
> 
> lets assume i have some classes:
> [...]
> 
> a=A()
> c=getattr(a, 'b.c')
> 
> I know this doesn't work, but what can i do to get this or a similar
> functionality to get it work for this sample and for even more nested
> classes?

Just recursively apply the getattr(), like this:

class A(object):
     def __init__(self):
         self.b = B()

class B(object):
     def __init__(self):
         self.c = C()

class C(object):
     def __init__(self):
         pass

def ext_getattr(obj, attr):
     for subattr in attr.split("."):
         obj = getattr(obj, subattr)
     return obj

a=A()
c = ext_getattr(a, 'b.c')

-- Gerhard




More information about the Python-list mailing list