code: def test_ufunc_properties_readonly(self, func, nin, nout, identity):
      jnp_fun = jnp.frompyfunc(
          func, nin=nin, nout=nout, identity=identity
      )
      for attr in [
          "nargs",
          "nin",
          "nout",
          "identity",
          "_func",
          "_call",
      ]:
          getattr(jnp_fun, attr)  # no error on attribute access.
          with self.assertRaises(AttributeError):
              setattr(jnp_fun, attr, None)
  
imports: from functools import partial
  from absl.testing import absltest
  import numpy
  import jax
  import jax.numpy
  from jax._src import test_util
  from jax._src.numpy.ufunc_api import get_if_single_primitive
  from jax import config
label_desc: Use image node_id 2 for calling the LaxNumpyUfuncTests obj's underlying member method code with example usage: obj.test_ufunc_properties_readonly(func, nin, nout, identity) without return types