我基本上对字典列表进行了精心包装:
class Wrapper(object):
def __init__(self, data):
self.data = data
def get(self, attr):
return [d[attr] for d in self.data]
所以,
Wrapper([{'x': 23}, {'x': 42}, {'x': 5}]).get('x')
返回[23, 42, 5]
。现在我想分配速记属性,这样Wrapper.x
将返回与Wrapper.get('x')
. 我不知道data
先验中存在哪些键,所以我目前的方法是(改编自这个问题:
class Wrapper(object):
def __init__(self, data):
self.data = data
for key in data[0].keys():
setattr(self, key, property(lambda self: self.get(key)))
因此,假设数据的所有元素都具有相同的键,并且它们都是 python 中的有效标识符。但是,Wrapper(...).x
返回<property at 0x10a3d4838>
我做错了什么?