code: def test_actor_class_attributes(ray_start_regular_shared):
      class Grandparent:
          GRANDPARENT = 2
  
      class Parent1(Grandparent):
          PARENT1 = 6
  
      class Parent2:
          PARENT2 = 7
  
      @ray.remote
      class TestActor(Parent1, Parent2):
          X = 3
  
          @classmethod
          def f(cls):
              assert TestActor.GRANDPARENT == 2
              assert TestActor.PARENT1 == 6
              assert TestActor.PARENT2 == 7
              assert TestActor.X == 3
              return 4
  
          def g(self):
              assert TestActor.GRANDPARENT == 2
              assert TestActor.PARENT1 == 6
              assert TestActor.PARENT2 == 7
              assert TestActor.f() == 4
              return TestActor.X
  
      t = TestActor.remote()
      assert ray.get(t.g.remote()) == 3
  
imports: import datetime
  import os
  import random
  import sys
  import tempfile
  import numpy
  import pytest
  import ray
  from ray import cloudpickle
  from ray._private import ray_constants
  from ray._private.test_utils import client_test_enabled, wait_for_condition, wait_for_pid_to_exit
  from ray.actor import ActorClassInheritanceException
  from ray.tests.client_test_utils import create_remote_signal_actor
  from ray._private.test_utils import SignalActor
  import setproctitle
label_desc: Use image node_id 20 for calling a global function with example usage: test_actor_class_attributes(ray_start_regular_shared) and returns: int, TestActor