class_docstr: A `DecisionNode` encapsulates internal node in the tree
  Unlike a `LeafNode`, it contains very little actual logic beyond tying the tree together
code: def n_obs(self):
      n_l = self.left_child.n_obs
      n_r = self.right_child.n_obs
      return n_l + n_r
  
imports: from typing import Union, Tuple
  from .data import Data
  from .split import Split, SplitCondition
label_desc: Use image node_id 4 for calling the DecisionNode obj's underlying member method code with example usage: obj.n_obs() and returns: unknown