如何在python中创建包含对象的选定属性的列表?使用列表推导。
例如:
我的对象A有
A.name
A.age
A.height
以及更多属性
如何创建列表[name,age]
我可以手动完成,但看起来很难看:
l=[]
l.append(A.name)
l.append(A.age)
但我正在寻找捷径。
答案 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())