假设以下情况: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 foolishI'm foolishI'm foolish我想知道自己,这是另一种方法还是我可以使用的内置方法。
1 回答
aluckdog
TA贡献1847条经验 获得超7个赞
那并没有按照您的想法做:每次都得到第一个要素。由于所有级别都称为“参考”,因此它似乎只能工作。如果您将它们称为“ foo.bar.baz”,它将失败。您每次实际上需要使用上一次迭代中的元素:
def get_ref(ref_attr):
item = f
for attr in ref_attr.split('.'):
item = getattr(item, attr)
print item
但是,没有内置的方法可以做到这一点。
添加回答
举报
0/150
提交
取消