Да, использование декоратора на самом деле больше кода, но у него есть то преимущество, что вы можете видеть, что метод обновляет все с одного взгляда.Это другой тип явности; -)
def update_after(m):
""" calls self.update_everything() after method m """
def decorated(self, *args, **kwargs):
r = m(self, *args, **kwargs)
self.update_everything()
return r
return decorated
def MyClass(object):
def __init__(self):
pass
def update_everything(self):
'''update everything'''
pass
@update_after
def f1(self):
#do stuff
return result
@update_after
def f2(self):
#do stuff
return result
@update_after
def f3(self):
#do stuff
return result