class_docstr: Parameters:
      -----------
      nid : int, optional
          ID of the node.
      sitename : str, optional
          Name of the site that the node belongs to.
      fid : int, optional
          ID of the feature that the node splits on.
      bid : float or int, optional
          Feature value that the node splits on.
      weight : float, optional
          Weight of the node.
      is_leaf : bool, optional
          Boolean indicating whether the node is a leaf node.
      grad : float, optional
          Gradient value of the node.
      hess : float, optional
          Hessian value of the node.
      l : int, optional
          ID of the left child node.
      r : int, optional
          ID of the right child node.
      missing_dir : int, optional
          Direction for missing values (1 for left, -1 for right).
      sample_num : int, optional
          Number of samples in the node.
      is_left_node : bool, optional
          Boolean indicating whether the node is a left child node.
      sibling_nodeid : int, optional
          ID of the sibling node.
code: def __init__(
      self,
      nid=None,
      sitename=None,
      fid=None,
      bid=None,
      weight=0.0,
      is_leaf=False,
      grad=None,
      hess=None,
      l=-1,
      r=-1,
      missing_dir=1,
      sample_num=0,
      is_left_node=False,
      sibling_nodeid=None,
      parent_nodeid=None,
      split_id=None,
  ):
      self.nid = nid
      self.sitename = sitename
      self.fid = fid
      self.bid = bid
      self.weight = weight
      self.is_leaf = is_leaf
      self.grad = grad
      self.hess = hess
      self.l = l
      self.r = r
      self.missing_dir = missing_dir
      self.sample_num = sample_num
      self.is_left_node = is_left_node
      self.sibling_nodeid = sibling_nodeid
      self.parent_nodeid = parent_nodeid
      self.split_id = split_id
  
imports: import numpy
  import pandas
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  from fate.ml.ensemble.learner.decision_tree.tree_core.splitter import SplitInfo
  from typing import List
  import logging
label_desc: Use image node_id 1 to create a new Node object from inherited base classes: object with example: obj = Node(nid, sitename, fid, bid, weight, is_leaf, grad, hess, l, r, missing_dir, sample_num, is_left_node, sibling_nodeid, parent_nodeid, split_id)