<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def select(self, *attributes):
 """ Select the passed +attributes+ from the table, subject to the restrictions provided by the other methods in this class. ex) SELECT foos.name, foos.id FROM foos """

        namespaced_attributes = [
            "{table}.{attr}".format(table=self.table_name, attr=attr)
            for attr in attributes
        ]
        cmd = ('select {attrs} from {table} '
               '{join_clause}{where_clause}{order_clause}'
               '{group_clause}{having_clause}{limit_clause}').format(
            table=self.table_name,
            attrs=", ".join(namespaced_attributes),
            where_clause=self.where_clause,
            join_clause=self.join_clause,
            order_clause=self.order_clause,
            group_clause=self.group_clause,
            having_clause=self.having_clause,
            limit_clause=self.limit_clause,
        ).rstrip()
        return Repo.db.execute(cmd, self.where_values + self.having_values + \
                               self.limit_value)