code: def __new__(cls, expr, *variables, **kwargs):
      obj = super().__new__(cls, expr, *variables, **kwargs)
      if isinstance(obj, ArrayDerivative):
          obj._shape = obj._get_shape()
      return obj
  
imports: from __future__ import annotations
  from sympy.core.expr import Expr
  from sympy.core.function import Derivative
  from sympy.core.numbers import Integer
  from sympy.matrices.matrixbase import MatrixBase
  from .ndim_array import NDimArray
  from .arrayop import derive_by_array
  from sympy.matrices.expressions.matexpr import MatrixExpr
  from sympy.matrices.expressions.special import ZeroMatrix
  from sympy.matrices.expressions.matexpr import _matrix_derivative
label_desc: Use image node_id 1 for calling the ArrayDerivative obj's underlying member method code with example usage: obj.__new__(cls, expr) and returns: obj