An operation type that can be applied to a collection of qubits.Gates can be applied to qubits by calling their on() method withthe qubits to be applied to supplied, or, alternatively, by simplycalling the gate on the qubits. In other words calling MyGate.on(q1, q2)to create an Operation on q1 and q2 is equivalent to MyGate(q1,q2).Gates operate on a certain number of qubits. All implementations of gatemust implement the
num_qubitsmethod declaring how many qubits theyact on. The gate feature classes
TwoQubitGatecan be used to avoid writing this boilerplate.Linear combinations of gates can be created by adding gates together andmultiplying them by scalars.
Initialize self. See help(type(self)) for accurate signature.