def __init__(self, table_description, data=None, custom_properties=None):
self.__columns = self.TableDescriptionParser(table_description)<EOL>self.__data = []<EOL>self.custom_properties = {}<EOL>if custom_properties is not None:<EOL><INDENT>self.custom_properties = custom_properties<EOL><DEDENT>if data:<EOL><INDENT>self.LoadData(data)<EOL><DEDENT>
Initialize the data table from a table schema and (optionally) data.

        See the class documentation for more information on table schema and data
        values.

        Args:
          table_description: A table schema, following one of the formats described
                             in TableDescriptionParser(). Schemas describe the
                             column names, data types, and labels. See
                             TableDescriptionParser() for acceptable formats.
          data: Optional. If given, fills the table with the given data. The data
                structure must be consistent with schema in table_description. See
                the class documentation for more information on acceptable data. You
                can add data later by calling AppendData().
          custom_properties: Optional. A dictionary from string to string that
                             goes into the table's custom properties. This can be
                             later changed by changing self.custom_properties.

        Raises:
          DataTableException: Raised if the data and the description did not match,
                              or did not use the supported formats.