code: def test_save_load(self):
      parent = Parent()
      parent.link.param.detach().numpy()[:] = 1
      parent.child.link.param.detach().numpy()[:] = 2
      # Save
      dirname = tempfile.mkdtemp()
      parent.save(dirname)
      self.assertTrue(os.path.isdir(dirname))
      self.assertTrue(os.path.isfile(os.path.join(dirname, "link.pt")))
      self.assertTrue(os.path.isdir(os.path.join(dirname, "child")))
      self.assertTrue(
          os.path.isfile(os.path.join(dirname, "child", "link.pt"))
      )
      # Load
      parent = Parent()
      self.assertEqual(int(parent.link.param.detach().numpy()), 0)
      self.assertEqual(int(parent.child.link.param.detach().numpy()), 0)
      parent.load(dirname)
      self.assertEqual(int(parent.link.param.detach().numpy()), 1)
      self.assertEqual(int(parent.child.link.param.detach().numpy()), 2)
  
imports: import os
  import tempfile
  import unittest
  import torch
  import pfrl
label_desc: Use image node_id 1 for calling the TestAttributeSavingMixin obj's underlying member method code with example usage: obj.test_save_load() without return types