class SpecialNumber:
def __init__(self, i):
self.number = i
def __repr__(self):
return '<SpecialNumber(%d)>' % self.number
def __cmp__(self, other):
return cmp(self.number, other.number)
li = [SpecialNumber(1), SpecialNumber(3), SpecialNumber(2)]
print min(li) # <SpecialNumber(1)>
Ответ 4
версия getattr быстрее
import random
from operator import attrgetter
class Test:
def __init__(self):
self.a = random.random()
t = [Test() for i in range(10000)]
%timeit min(t, key=lambda x: x.a)
1000 loops, best of 3: 790 µs per loop
%timeit min(t,key=attrgetter('a'))
1000 loops, best of 3: 582 µs per loop