code: def product(self, *bases):
          
          if len(bases) > 1:
              basis_rest = bases[0].product(*bases[1:])
          else:
              assert len(bases) == 1
              basis_rest = bases[0]
  
          labels_ops = [(b1l + b2l, qt.tensor(b1, b2)) for (b1l, b1), (b2l, b2) in
                        itertools.product(self, basis_rest)]
  
          return OperatorBasis(labels_ops)
docs: Compute the tensor product with another basis.
  
          :param bases: One or more additional bases to form the product with.
          :return (OperatorBasis): The tensor product basis as an OperatorBasis object.