code: def get_task_info(self):
      task_type = get_task_info(self.objective)
      if task_type == BINARY:
          classes = [0, 1]
      elif task_type == REGRESSION:
          classes = None
      elif task_type == MULTI:
          classes = [i for i in range(self.num_class)]
      else:
          raise RuntimeError(f"unknown task type {task_type}")
      return task_type, classes
  
imports: import numpy
  import pandas
  from typing import Optional, Union
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  from fate.ml.ensemble.algo.secureboost.hetero._base import HeteroBoostingTree
  from fate.ml.ensemble.learner.decision_tree.hetero.guest import HeteroDecisionTreeGuest
  from fate.ml.ensemble.utils.binning import binning
  from fate.ml.ensemble.learner.decision_tree.tree_core.loss import OBJECTIVE, get_task_info, MULTI_CE, BINARY_BCE, REGRESSION_L2
  from fate.ml.ensemble.algo.secureboost.common.predict import predict_leaf_guest
  from fate.ml.utils.predict_tools import compute_predict_details, PREDICT_SCORE, BINARY, MULTI, REGRESSION
  from fate.ml.ensemble.learner.decision_tree.tree_core.decision_tree import GUEST_FEAT_ONLY, ALL_FEAT
  from fate.ml.ensemble.utils.sample import goss_sample
  import logging
label_desc: Use image node_id 8 for calling the HeteroSecureBoostGuest obj's underlying member method code with example usage: obj.get_task_info() and returns: task_type,  classes