class_docstr: The Kronecker product of two or more arguments.
  
  The Kronecker product is a non-commutative product of matrices.
  Given two matrices of dimension (m, n) and (s, t) it produces a matrix
  of dimension (m s, n t).
  
  This is a symbolic object that simply stores its argument without
  evaluating it. To actually compute the product, use the function
  ``kronecker_product()`` or call the ``.doit()`` or  ``.as_explicit()``
  methods.
  
  >>> from sympy import KroneckerProduct, MatrixSymbol
  >>> A = MatrixSymbol('A', 5, 5)
  >>> B = MatrixSymbol('B', 5, 5)
  >>> isinstance(KroneckerProduct(A, B), KroneckerProduct)
  True
code: def doit(self, **hints):
      deep = hints.get("deep", True)
      if deep:
          args = [arg.doit(**hints) for arg in self.args]
      else:
          args = self.args
      return canonicalize(KroneckerProduct(*args))
  
imports: from functools import reduce
  from math import prod
  from sympy.core import Mul, sympify
  from sympy.functions import adjoint
  from sympy.matrices.exceptions import ShapeError
  from sympy.matrices.expressions.matexpr import MatrixExpr
  from sympy.matrices.expressions.transpose import transpose
  from sympy.matrices.expressions.special import Identity
  from sympy.matrices.matrixbase import MatrixBase
  from sympy.strategies import canon, condition, distribute, do_one, exhaust, flatten, typed, unpack
  from sympy.strategies.traverse import bottom_up
  from sympy.utilities import sift
  from .matadd import MatAdd
  from .matmul import MatMul
  from .matpow import MatPow
label_desc: Use image node_id 15 for calling the KroneckerProduct obj's underlying member method code with example usage: obj.doit() and returns: canonicalize