code: def testAttrNoPython(self, intval=123456789):
      cls, obj = type(self.obj), self.obj
  
      def copy_fn(o, k, v):
          assert k == self.keyval
          assert v == intval
          return v
  
      def del_fn(o, k, v):
          assert k == self.keyval
          assert v == intval
  
      self.keyval = cls.Create_keyval(copy_fn, del_fn, nopython=True)
      self.assertNotEqual(self.keyval, MPI.KEYVAL_INVALID)
      attr = obj.Get_attr(self.keyval)
      self.assertIsNone(attr)
      obj.Set_attr(self.keyval, intval)
      attr = obj.Get_attr(self.keyval)
      self.assertEqual(attr, intval)
      if hasattr(obj, "Dup"):
          dup = obj.Dup()
          attr = dup.Get_attr(self.keyval)
          self.assertEqual(attr, intval)
          dup.Free()
      obj.Delete_attr(self.keyval)
      attr = obj.Get_attr(self.keyval)
      self.assertIsNone(attr)
  
imports: from mpi4py import MPI
  import mpiunittest
label_desc: Use image node_id 6 for calling the BaseTestAttr obj's underlying member method code with example usage: obj.testAttrNoPython(intval) and returns: v