memento example, why Transactional is defined as a descriptor?
LeiYangGH opened this issue · comments
learning the example patterns/behavioral/memento.py.
Transactional
is defined as a descriptor, this looks more complicated
class Transactional:
def __init__(self, method):
self.method = method
def __get__(self, obj, T):
def transaction(*args, **kwargs):
state = memento(obj)
try:
return self.method(obj, *args, **kwargs)
except Exception as e:
state()
raise e
return transaction
how about refactor to normal higher-order function?
def Transactional(method):
def transaction(obj, *args, **kwargs):
state = memento(obj)
try:
return method(obj, *args, **kwargs)
except Exception as e:
state()
raise e
return transaction
Sure, any simplification is welcome. Feel free to create a pull request