【发布时间】:2015-10-27 22:08:38
【问题描述】:
给定具有属性 a 和 b 的对象列表,我想从列表中满足给定约束的第一个对象中获取属性。下面显示了一种解决方案,但对于具有许多属性的对象,这是不可取的。
class Foo(object):
def __init__(self):
self.a = 0
self.b = 1
def get_first_a(l):
return next(val.a for val in l if val.a > 0)
def get_first_b(l):
return next(val.b for val in l if val.b > 0)
def main():
bar0 = Foo()
bar1 = Foo()
bar2 = Foo()
bar2.a = 10
l = [bar0, bar1, bar2]
a = get_first_a(l) # returns 10
b = get_first_b(l) # returns 1
有没有办法将对象属性传递给函数?我不希望添加枚举或使用字符串匹配,而是类似于以下内容:
def get_first_b(l, object_attribute):
return next(val.object_attribute for val in l if val.object_attribute != 0)
【问题讨论】:
-
你可以使用 python
exec编辑:@Pynchia 有一个更好的解决方案getattr
标签: python list class attributes