Python 什么';获取引用对象(变量级别)的最佳方法
让我们假设以下情况:Python 什么';获取引用对象(变量级别)的最佳方法,python,getattr,Python,Getattr,让我们假设以下情况: class foo(object): def __init__(self, ref=None): self.ref = ref def __str__(self): return "I'm foolish" f = foo() f.ref = foo() f.ref.ref = foo() f.ref.ref.ref = foo() 尝试 打印(getattr(f,“ref.ref.ref”)) 引发“foo”对象没有属
class foo(object):
def __init__(self, ref=None):
self.ref = ref
def __str__(self):
return "I'm foolish"
f = foo()
f.ref = foo()
f.ref.ref = foo()
f.ref.ref.ref = foo()
尝试
打印(getattr(f,“ref.ref.ref”))
引发“foo”对象没有属性“ref.ref.ref”
因此,我通过以下功能解决了问题:
def get_ref(ref_attr):
for attr in ref_attr.split('.'):
print(getattr(f, attr))
get_ref("ref.ref.ref") retruns the expected result:
I'm foolish
I'm foolish
I'm foolish
我想知道自己,是不是有另一种方法可以做到这一点,还是我可以使用的内置方法
谢谢。这不是你想的那样:它每次都得到第一个元素。它似乎只起作用,因为所有级别都称为“ref”。如果你叫他们“foo.bar.baz”,那就失败了。每次都需要实际使用上一次迭代中的元素:
def get_ref(ref_attr):
item = f
for attr in ref_attr.split('.'):
item = getattr(item, attr)
print item
但是没有,没有内置的方法可以做到这一点。
reduce(getattr,属性名称,对象)
太好了,@Bakuriu。出于某种原因,我从未想过使用reduce
。