<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_site(self, *args):
 """ 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 """

        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})