On Mon, 26 Feb 2018 17:39:43 +0100, Peter Otten wrote: [...] > I have not yet looked into dataclasses. Don't they handle the __init__() > part? Anyway, here's my attempt to make spam() less spammy:
I'm not too concerned about __init__, it's only one method :-) > $ cat attrs_to_args_decorator.py > import functools > import inspect > > def add_defaults(f): > argnames = inspect.getfullargspec(f).args[1:] > > @functools.wraps(f) > def wrapper(self, *args, **kw): > args = [ > getattr(self, name) if value is None else value for name, > value in zip(argnames, args) > ] > for name in argnames[len(args):]: > if name not in kw or kw[name] is None: > kw[name] = getattr(self, name) > return f(self, *args, **kw) > return wrapper [...] Interesting, this does look promising, thanks. -- Steve -- https://mail.python.org/mailman/listinfo/python-list