class_docstr: A base class for operators that are composed of other operators.
  
  Args:
      operands: (tuple[~.operation.Operator]): a tuple of operators which will be combined.
  
  Keyword Args:
      id (str or None): id for the operator. Default is None.
  
  The child composite operator should define the `_op_symbol` property
  during initialization and define any relevant representations, such as
  :meth:`~.operation.Operator.matrix` and :meth:`~.operation.Operator.decomposition`.
code: def map_wires(self, wire_map: dict):
      # pylint:disable=protected-access
      cls = self.__class__
      new_op = cls.__new__(cls)
      new_op.operands = tuple(
          op.map_wires(wire_map=wire_map) for op in self
      )
      new_op._wires = Wires(
          [wire_map.get(wire, wire) for wire in self.wires]
      )
      new_op.data = copy.copy(self.data)
      for attr, value in vars(self).items():
          if attr not in {"data", "operands", "_wires"}:
              setattr(new_op, attr, value)
      if (p_rep := new_op.pauli_rep) is not None:
          new_op._pauli_rep = p_rep.map_wires(wire_map)
  
      return new_op
  
imports: import abc
  from typing import Callable, List
  import copy
  import numpy
  import pennylane
  from pennylane import math
  from pennylane.operation import Operator, convert_to_opmath, _UNSET_BATCH_SIZE
  from pennylane.wires import Wires
label_desc: Use image node_id 31 for calling the CompositeOp obj's underlying member method code with example usage: obj.map_wires(wire_map) and returns: new_op