code: def __init__(self, aggregator) -> None:
      if FLClient.channel is None:
          invalidOperationError(
              False,
              "No channel found, please make sure you called \
                  init_fl_context()",
          )
      if FLClient.client_id is None:
          invalidOperationError(
              False,
              "You have to set client_id with integer like: \
                  init_fl_context(client_id=1)",
          )
      self.nn_stub = NNServiceStub(FLClient.channel)
      self.client_uuid = FLClient.client_id
      self.aggregator = aggregator
  
file_path: BigDL/python/ppml/src/bigdl/ppml/fl/nn/nn_client.py
imports: from bigdl.ppml.utils.safepickle import SafePickle
  from bigdl.ppml.fl.nn.fl_client import FLClient
  from bigdl.ppml.fl.nn.generated.nn_service_pb2 import TrainRequest, PredictRequest, UploadMetaRequest
  from bigdl.ppml.fl.nn.generated.nn_service_pb2_grpc import *
  from bigdl.ppml.fl.nn.utils import ndarray_map_to_tensor_map
  import threading
  from bigdl.dllib.utils.log4Error import invalidInputError, invalidOperationError
  from bigdl.ppml.fl.nn.utils import ClassAndArgsWrapper
label_desc: Use image node_id 1 to create a new NNClient object from inherited base classes: object with example: obj = NNClient(aggregator)