1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
import functools
# mon registre
registry_model = {}
# ma class fake
class Klass(object):pass
# dans mon implémentation, j'utilise les metaclass pour enregistrer mon model
registry_model["Klass"] = {}
def register_io_write(model=None, _type="xml"):
" Register io write function for the model in _type context"
def decorated(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
registry_model[model.__name__].update({("io","write", _type):func})
return func(*args, **kwargs)
return wrapper
def decorator(func):
return decorated(func)
return decorator
@register_io_write(Klass, "xml")
def write_model(*args, **kwargs):
print args, kwargs
print registry_model
print "Done" |