Понимание __call__ и list.sort (key)

У меня есть следующий код I пытаюсь понять:

>>> class DistanceFrom(object):
        def __init__(self, origin):
            self.origin = origin
        def __call__(self, x):
            return abs(x - self.origin)  

>>> nums = [1, 37, 42, 101, 13, 9, -20]
>>> nums.sort(key=DistanceFrom(10))
>>> nums
[9, 13, 1, 37, -20, 42, 101]

Кто-нибудь может объяснить, как это работает? Насколько я понял, __ call __ - это то, что вызывается, когда вызывается object () - вызывая объект как функцию.

Я не понимаю, как nums.sort (key = DistanceFrom (10)) . Как это работает? Кто-нибудь может объяснить эту строку?

Спасибо!

5
задан SilentGhost 27 October 2010 в 14:44
поделиться