所以我一直在阅读getattr,并想知道相当于什么
example = val1.val2.val3(item)
会。 所以我得到你必须使用嵌套的getattr来实现多个级别的属性
example = getattr(getattr(val1, "val2"), "val3")
但是如何表示传入的对象?
答案 0 :(得分:1)
你几乎就在那里:
val3 = getattr(getattr(val1, "val2"), "val3")
example = val3(item)
# Or simply:
example = getattr(getattr(val1, "val2"), "val3")(item)
答案 1 :(得分:0)
或者您可以使用标准库operator.attrgetter中的简洁函数。这是一个有关如何使用它的小例子。
from operator import attrgetter
from collections import namedtuple
# Define some objects
Foo = namedtuple('Foo', 'attr')
Bar = namedtuple('Bar', 'subattr1')
instance = Foo(attr=Bar('this_is_my_value'))
retriever = attrgetter('attr.subattr1')
result = retriever(instance)
print(result)
执行此操作会给你
this_is_my_value