Well, regardless of being "pythonic" or not, the first is far more understandable and therefore more maintainable. Objects were invented to handle holding state; using a function to hold state is, in my opinion, doing a language-based cheat. :)
tj On Jan 24, 2008, at 10:14 PM, [EMAIL PROTECTED] wrote: > 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 > -- > http://mail.python.org/mailman/listinfo/python-list Travis Jensen [EMAIL PROTECTED] http://softwaremaven.innerbrane.com/ You should read my blog; it is more interesting than my signature. -- http://mail.python.org/mailman/listinfo/python-list