'Scale all components.
Parameters
op : `~operator` callable
Operator to apply (e.g., `~operator.mul`, `~operator.neg`, etc.
*args
Any arguments required for the operator (typically, what is to
be multiplied with, divided by).'

def _scale_operation(self, op, *args):

    scaled_attrs = [op(getattr(self, c), *args) for c in self.components]
    return self.__class__(copy=False, *scaled_attrs)
