Я знаю, что это, вероятно, дубликат, но я не смог найти ответ, который мог бы решить мою проблему.
Мой класс определен следующим образом:
import time
class Destination(object):
def __init__(self, name):
self.name = name
self.__idleness = time.time()
# keeps track of the time value when object was created
def get_idleness(self):
now = time.time()
return now - self.__idleness
Что я хочу сделать, это перебрать список Destination
объектов на основе возвращаемого значения get_idleness()
, либо с для l oop или с любой функцией, которая использует итеративный объект, например numpy.mean()
или встроенные max()
и min()
.
Я попытался добавить __iter__()
как:
def __iter__(self):
yield self.get_idleness()
но когда я попробовал этот пример, вывод был неверным:
dests = []
for i in range(6):
dests.append(Destination(name="wp%s" % i))
time.sleep(1)
print max(dests)
for d in dests:
print "%s: %s" % (d.name, d.get_idleness())
# max(dests): wp1
# printing all the values shows that wp0 should be the correct return value
РЕДАКТИРОВАТЬ : я понимаю, что мой вопрос был неясен. Моей конечной целью было бы использовать значение, возвращаемое self.get_idleness()
при итерации по списку Destination
s. Таким образом, независимо от метода итерации, я сравнивал бы пункты назначения на основе большего значения простоя.