def _qid_shape_(self) -> tuple[int, ...] | NotImplementedType:
        """A tuple specifying the number of quantum levels of each qid this
        object operates on, e.g. (2, 2, 2) for a three-qubit gate.

        This method is used by the global `cirq.qid_shape` method (and by
        `cirq.num_qubits` if `_num_qubits_` is not defined). If this
        method is not present, or returns NotImplemented, it is assumed that the
        receiving object operates on qubits. (The ability to return
        NotImplemented is useful when a class cannot know if it has a shape
        until runtime.)

        The order of values in the tuple is always implicit with respect to the
        object being called. For example, for gates the tuple must be ordered
        with respect to the list of qubits that the gate is applied to. For
        operations, the tuple is ordered to match the list returned by its
        `qubits` attribute.

        Returns:
            The qid shape of this value, or NotImplemented if the shape is
            unknown.
        """
A tuple specifying the number of quantum levels of each qid this
        object operates on, e.g. (2, 2, 2) for a three-qubit gate.

        This method is used by the global `cirq.qid_shape` method (and by
        `cirq.num_qubits` if `_num_qubits_` is not defined). If this
        method is not present, or returns NotImplemented, it is assumed that the
        receiving object operates on qubits. (The ability to return
        NotImplemented is useful when a class cannot know if it has a shape
        until runtime.)

        The order of values in the tuple is always implicit with respect to the
        object being called. For example, for gates the tuple must be ordered
        with respect to the list of qubits that the gate is applied to. For
        operations, the tuple is ordered to match the list returned by its
        `qubits` attribute.

        Returns:
            The qid shape of this value, or NotImplemented if the shape is
            unknown.
        
cirq-core/cirq/protocols/qid_shape_protocol.py