Which is more pythonic?

benjamin.zimmerman at gmail.com benjamin.zimmerman at gmail.com
Fri Jan 25 00:14:22 EST 2008


I have a goal function that returns the fitness of a given solution. I
need to wrap that function with a class or a function to keep track of
the best solution I encounter. Which of the following would best serve
my purpose and be the most pythonic?

class Goal:
    def __init__(self, goal):
        self.goal = goal
        self.best = None
        self.best_score = None

    def __call__(self, solution):
        score = self.goal(solution)
        if self.best is None or score > self.best_score:
            self.best_score = score
            self.best = solution
        return score

def save_best_goal(goal):
    def new_goal(solution):
        score = goal(solution)
        if new_goal.best is None or score > new_goal.best_score:
            new_goal.best = solution
            new_goal.best_score = score
        return score
    new_goal.best = new_goal.best_score = None
    return new_goal

-Ben



More information about the Python-list mailing list