我有几个带副作用的函数(在程序存储器之外)。
我想编写一个以原子方式执行一系列操作(函数调用)的程序,这样如果序列的任何操作失败,就会回滚先前执行的操作。
我找不到任何这样做的图书馆,所以我开始自己写点什么。
我的想法是将操作包装在上下文管理器中,例如:
def f1(a):
#a function with side effects
pass
#...
with AtomicOperation() as a:
a.f1( arg )
a.f2( arg2 )
somevariable= a_function_without_side_effects()
a.f3( arg3 )
使用getattr
和partial
一些技巧似乎是可行的。
这看起来像是一种明智的设计吗?