docstr: Args:
      nodes: list of node ID
  
      node_type: str, node type
  
      feat_names: the node feature name or a list of node feature name
docstr_tok: ["Args",":","nodes",":","list","of","node","ID","node_type",":","str",",","node","type","feat_names",":","the","node","feature","name","or","a","list","of","node","feature","name"]
code: def get_node_feat(self, nodes, node_type, feat_names):
      """
      Args:
          nodes: list of node ID
  
          node_type: str, node type
  
          feat_names: the node feature name or a list of node feature name
      """
  
      flag = False
      if isinstance(feat_names, str):
          feat_names = [feat_names]
          flag = True
      elif isinstance(feat_names, list):
          pass
      else:
          raise TypeError(
              "The argument of feat_names should a node feature name "
              "or a list of node feature name. "
              "But got %s" % (type(feat_names))
          )
  
      byte_nfeat_list = self._client.get_node_feat(
          node_type, nodes, feat_names
      )
  
      # convert bytes to dtype
      nfeat_list = []
      for fn_idx, fn in enumerate(feat_names):
          dtype, _ = self.nfeat_info[node_type][fn]
          if dtype == "string":
              f_list = [
                  item.decode("utf-8")
                  for item in byte_nfeat_list[fn_idx]
              ]
          else:
              f_list = [
                  np.frombuffer(item, dtype)
                  for item in byte_nfeat_list[fn_idx]
              ]
          nfeat_list.append(f_list)
  
      if flag:
          return nfeat_list[0]
      else:
          return nfeat_list
  
imports: import os
  import sys
  import time
  import argparse
  import warnings
  import numpy
  from functools import partial
  from paddle.framework import core
  from pgl.utils.logger import log
  from pgl.distributed import helper
label_desc: Use image node_id 9 for calling the DistGraphClient obj's underlying member method code with example usage: obj.get_node_feat(nodes, node_type, feat_names) and returns: nfeat_list, nfeat_list