Давайте предположим, следующий случай:Какой самый лучший способ, чтобы получить объект ссылки (переменная уровня)
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"))
raises '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
Я удивляюсь сам, если это еще один способ сделать это или встроенный метод, который я мог бы использовать.
Спасибо.
ОК, большое спасибо;) –
'reduce (getattr, attribute_names, object)' – Bakuriu
Отлично, @ Бакуриу. По какой-то причине я никогда не думаю об использовании 'reduce'. –