class_docstr: Base class for Requests and Replies.
  
  All subclasses must accept keyword arguments to __init__() corresponding to
  their attributes.
code: def send(self, socket, routing=None):
      if routing is None:
          routing = []
      if hasattr(self, "_remote"):
          assert (
              not self._remote
          ), "send() called on a non-local Communicable object."
      json_str, buffers = cellprofiler_core.utilities.zmq.json_encode(
          self.__dict__
      )
      json_str = json_str.encode("utf-8")
      message_parts = (
          routing
          + [
              self.__class__.__module__.encode("utf-8"),
              self.__class__.__name__.encode("utf-8"),
          ]
          + [json_str]
      )
      socket.send_multipart(
          message_parts + buffers,
          copy=False,
      )
  
imports: import sys
  import cellprofiler_core.utilities.zmq
label_desc: Use image node_id 1 for calling the Communicable obj's underlying member method code with example usage: obj.send(socket, routing) without return types