これはstrategyパターン。stateパターンとは視点こそ違うが
同じものだ、と思う。それでいいのか?(いいと思うが)

import sys
import exceptions

class _strategyTemplate(object): # Abstract なつもり
def _strategyMethod(self):
raise exceptions.NotImplementedError, '%s' %`self.__class__`

class Strategy1(_strategyTemplate):
def __init__(self):
pass
def _strategyMethod(self):
print u"これは戦略1です" # 処理

class Strategy2(_strategyTemplate):
def __init__(self):
pass
def _strategyMethod(self):
print u"これは戦略2です" # 状況が変わったとき、同様の事を実現する別の処理

class acceptStrategy(object):
def __init__(self):
self.__strategy = None
def setStrategy(self, strategyObject):
self.__strategy = strategyObject # オブジェクトの受け入れ
def __getattr__(self, attrname):
return getattr(self.__strategy, attrname)