code: def get_site(self, *args):
          
          num_args = len(args)
          if num_args == 1:
              site = args[0]
          elif num_args == 2:
              host_name, path_to_site = args
              path_to_site = '/' + path_to_site if not path_to_site.startswith(
                  '/') else path_to_site
              site = '{}:{}:'.format(host_name, path_to_site)
          elif num_args == 3:
              site = ','.join(args)
          else:
              raise ValueError('Incorrect number of arguments')
  
          url = self.build_url(self._endpoints.get('get_site').format(id=site))
  
          response = self.con.get(url)
          if not response:
              return None
  
          data = response.json()
  
          return self.site_constructor(parent=self,
                                       **{self._cloud_data_key: data})
docs: Returns a sharepoint site
  
          :param args: It accepts multiple ways of retrieving a site:
  
           get_site(host_name): the host_name: host_name ej.
           'contoso.sharepoint.com' or 'root'
  
           get_site(site_id): the site_id: a comma separated string of
           (host_name, site_collection_id, site_id)
  
           get_site(host_name, path_to_site): host_name ej. 'contoso.
           sharepoint.com', path_to_site: a url path (with a leading slash)
  
           get_site(host_name, site_collection_id, site_id):
           host_name ej. 'contoso.sharepoint.com'
          :rtype: Site