Как использовать фильтр в Python с функцией, которая принадлежит объекту, который является элементом в фильтруемом списке? - PullRequest
1 голос
/ 01 сентября 2011

Если говорить точнее, в моем случае класс Job содержит несколько Task объектов, над которыми он работает.

 import tasker 

 class Job(object): 
    _name = None 
    _tasks = []
    _result = None 

    def __init__(self, Name): 
        self._name = Name

    def ReadTasks(self): 
        # read from a Json file and create a list of task objects. 

    def GetNumTasks(self):
        return len(self._tasks)

    def GetNumFailedTasks(self):
        failTaskCnt = 0
        for task in self._tasks:
            if task.IsTaskFail():
                failTaskCnt += 1

Чтобы сделать GetNumFailedTasks более кратким, я хотел бы использовать фильтр, но я не уверен, как правильно предоставить фильтр с IsTaskFail в качестве первого параметра.

В случае, если это дубликат, отметьте его и укажите правильный ответ.

1 Ответ

4 голосов
/ 01 сентября 2011

Вы можете использовать выражение генератора с sum:

failTaskCnt = sum(1 for task in self._tasks if task.IsTaskFail())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...