您可能可以使用
reduce此功能:
>>> class Foo(object): pass... >>> a = Foo()>>> a.foo = Foo()>>> a.foo.bar = Foo()>>> a.foo.bar.baz = Foo()>>> a.foo.bar.baz.qux = Foo()>>> >>> reduce(lambda x,y:getattr(x,y,''),['foo','bar','baz','qux'],a)<__main__.Foo object at 0xec2f0>>>> reduce(lambda x,y:getattr(x,y,''),['foo','bar','baz','qux','quince'],a)''
在python3.x中,我认为它
reduce已移至
functools:(
我想您也可以使用更简单的功能来做到这一点:
def attr_getter(item,attributes) for a in attributes: try: item = getattr(item,a) except AttributeError: return None #or whatever on error return item
最后,我想 最好的 方法是:
try: title = foo.bar.baz.quxexcept AttributeError: title = None
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)