如何将对象的选定属性放入python列表?

时间:2016-09-08 17:53:48

标签: python list list-comprehension python-2.x

如何在python中创建包含对象的选定属性的列表?使用列表推导。

例如:

我的对象A有

A.name
A.age
A.height

以及更多属性

如何创建列表[name,age]

我可以手动完成,但看起来很难看:

l=[]
l.append(A.name)
l.append(A.age)

但我正在寻找捷径。

3 个答案:

答案 0 :(得分:5)

为什么不只是[A.name, A.age]list文字很简单。 You could use operator.attrgetter if you need to do it a lot,虽然它在获取多个属性时返回tuple,而不是list s,所以如果您不能使用它,则必须转换。

答案 1 :(得分:1)

您正在寻找的是operator.attrgetter

attrs = ['name', 'age'] 
l = list(operator.attrgetter(*attrs)(A))

答案 2 :(得分:0)

您可以通过所有A类属性收集它们,并检查它们是不是方法还是内置。

import inspect

def collect_props():
    for name in dir(A):
        if not inspect.ismethod(getattr(A, name)) and\
           not name.startswith('__'):
            yield name

print list(collect_props())