以下の DataContext クラスを (可能であれば) 改善するか、別の解決策を見つけようとしています。
class Store(object):
def __init__( self, contents=None):
self.contents = contents
class DataContext(object):
def __init__( self, datastore ) : # datastore is of type store
self.store = datastore
def __enter__( self ) :
self.temp_store = copy.copy( self.store.contents ) # Improve upon this!
def __exit__( self, type, value, traceback ) :
self.store.contents = self.temp_store
使用例:
data = Store( [1,2,3] )
print "Before context: ", data.contents
with DataContext( data ):
data.contents.append( 4 ) # Tampering with the data
print "Within context: ", data.contents
print "Outside context: ", data.contents
出力:
Before context: [1, 2, 3]
Within context: [1, 2, 3, 4]
Outside context: [1, 2, 3]
大copy
規模なデータ構造の場合、コストが高くなる可能性があります。コンテキスト内のデータ構造への変更のみを保存し、実行中にデータへの特定の変更を元に戻すためのクリーンな方法は何ですか (またはありexit
ますか? )