chained attrgetter
Brian Beck
exogen at gmail.com
Thu Oct 26 04:51:05 EDT 2006
Alexey Borzenkov wrote:
> Do you mean something like
>
> class cattrgetter:
> def __init__(self, name):
> self.names = name.split('.')
> def __call__(self, obj):
> for name in self.names:
> obj = getattr(obj, name)
> return obj
I'll raise you one:
def cattrgetter(attr):
return lambda obj: reduce(getattr, attr.split('.'), obj)
py> class A: pass
py> a = A
py> a.b = A
py> a.b.c = "Hey!"
py> cattrgetter('b.c')(a)
'Hey!'
--
Brian Beck
Adventurer of the First Order
More information about the Python-list
mailing list