擅长:python、mysql、java
<p>您可以使用getattr,但如果没有符合您条件的object\u属性,则最终会出现StopIteration错误:</p>
<pre><code>def get_first(l, object_attribute, op, cond):
return next((getattr(val, object_attribute) for val in l
if op(getattr(val, object_attribute), cond)), None)
</code></pre>
<p>您可以将所需的内容传递给单个函数:</p>
<pre><code>from operator import ne, gt, lt
def main():
bar0 = Foo()
bar1 = Foo()
bar2 = Foo()
bar2.a = 10
l = [bar0, bar1, bar2]
a = get_first(l,"a", gt, 0) # returns 10
b = get_first(l, "b", ne, 0) # returns 1
c = get_first(l, "b", lt, -1)
print(a)
print(b)
print(c)
main()
</code></pre>
<p>输出:</p>
<pre><code>10
1
None
</code></pre>