class_docstr: This class defines the minimal interface of a model object which is
  backed by a C++ model implementation.
  
  All state in a Model must be stored in the C++-side __proxy__ object.
  
  _native_name must be implemented. _native_name can returns a list if there
  are multiple C++ types for the same Python object. The native names *must*
  match the registered name of the model (name() method)
  
  The constructor must also permit construction from only 1 argument : the proxy object.
  
  For instance:
  
  class MyModel:
      @classmethod
      def _native_name(cls):
          return "MyModel"
  
  Or:
  
  class NearestNeighborsModel:
      @classmethod
      def _native_name(cls):
          return ["nearest_neighbors_ball_tree", "nearest_neighbors_brute_force", "nearest_neighbors_lsh"]
code: def __str__(self):
      return self.__repr__()
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import turicreate
  import turicreate._connect.main
  from turicreate.data_structures.sframe import SFrame
  import turicreate.extensions
  from turicreate.extensions import _wrap_function_return
  from turicreate.toolkits._internal_utils import _toolkit_serialize_summary_struct
  from turicreate.util import _make_internal_url
  from turicreate.toolkits._main import ToolkitError
  from turicreate._deps.minimal_package import _minimal_package_import_check
  import turicreate.util._file_util
  import os
  from copy import copy
  import six
  import warnings
label_desc: Use image node_id 7 for calling the Model obj's underlying member method code with example usage: obj.__str__() and returns: self