的變化上Alex's answer:
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()
用法:
if save_data(get_input()):
print save_data.value
,或者如果你喜歡的替代接口:
if save_data.set(get_input()):
print save_data.get()
我會覺得這有助於在測試一系列的正則表達式的如果 - elif的 - elif的 - elif的等建設,爲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)
你有一個Python教程書籤?哪一個? – 2009-11-02 22:03:35
只是官方的一個:http://docs.python.org/tutorial/ – givp 2009-11-02 22:07:58
值得慶幸的是,Python沒有該C不好的特性,而在一般情況下,在繼承了從C/C++大多數語言中,它的使用是令人難以接受的出於可讀性和清晰的原因。 – 2009-11-02 22:17:39