<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_table_schema(self, dataset, table, project_id=None):
 """Return the table schema. Parameters dataset : str The dataset containing the `table`. table : str The table to get the schema for project_id: str, optional The project of the dataset. Returns ------- list A ``list`` of ``dict`` objects that represent the table schema. If the table doesn't exist, None is returned. """

        project_id = self._get_project_id(project_id)

        try:    
            result = self.bigquery.tables().get(
                projectId=project_id,
                tableId=table,
                datasetId=dataset).execute(num_retries=self.num_retries)
        except HttpError as e:
            if int(e.resp['status']) == 404:
                logger.warn('Table %s.%s does not exist', dataset, table)
                return None
            raise

        return result['schema']['fields']