Alex answer option:
class DataHolder: def __init__(self, value=None, attr_name='value'): self._attr_name = attr_name self.set(value) def __call__(self, value): return self.set(value) def set(self, value): setattr(self, self._attr_name, value) return value def get(self): return getattr(self, self._attr_name) save_data = DataHolder()
Using:
if save_data(get_input()): print save_data.value
or if you prefer an alternative interface:
if save_data.set(get_input()): print save_data.get()
It would be useful for me to check a number of regular expressions in the if-elif-elif-elif construct, etc., as in this SO question :
import re input = u'test bar 123' save_match = DataHolder(attr_name='match') if save_match(re.search('foo (\d+)', input)): print "Foo" print save_match.match.group(1) elif save_match(re.search('bar (\d+)', input)): print "Bar" print save_match.match.group(1) elif save_match(re.search('baz (\d+)', input)): print "Baz" print save_match.match.group(1)
Craig McQueen Nov 27 '09 at 1:03 2009-11-27 01:03
source share