为了账号安全,请及时绑定邮箱和手机立即绑定

获取引用对象(可变级别)的最佳方法是什么

获取引用对象(可变级别)的最佳方法是什么

繁星点点滴滴 2021-03-30 21:02:53
假设以下情况: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

但是,没有内置的方法可以做到这一点。


查看完整回答
反对 回复 2021-04-01
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信