【发布时间】:2012-02-01 18:19:11
【问题描述】:
我想动态查询我想检索的类中的哪些对象。 getattr 似乎是我想要的,它对类中的顶级对象执行良好。但是,我还想指定子元素。
class MyObj(object):
def __init__(self):
self.d = {'a':1, 'b':2}
self.c = 3
myobj = MyObj()
val = getattr(myobj, "c")
print val # Correctly prints 3
val = getattr(myobj, "d['a']") # Seemingly incorrectly formatted query
print val # Throws an AttributeError
如何通过字符串获取对象的字典元素?
【问题讨论】:
-
getattr(myobj, "d")['a']会这样做,但我想这不是你想要的。 -
不,这不是我想要的。我希望该技术具有通用性,以便我可以使用动态构造的字符串请求对象的属性或对象的子属性/子对象/子项。我可以用“eval”来做到这一点,但我不想这样做。
-
您将不得不创建一些复杂的函数来解析字符串,这实际上是“eval”的精简版。为什么你需要这个顺便说一句?听起来应该有更好的解决方案...
标签: python dictionary getattr