code: def main():
      items = [Item('Name1', 'Description1'),
               Item('Name2', 'Description2'),
               Item('Name3', 'Description3')]
  
      table = ItemTable(items)
  
      # or {{ table }} in jinja
      print(table.__html__())
  
      
docs: Outputs:
  
      <table>
        <thead>
          <tr>
            <th class="my-name-class">Name</th>
            <th class="my-description-class"
                data-something="my-data"
                data-something-else="my-description-th-class">
              Description
            </th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td class="my-name-class">Name1</td>
            <td class="my-description-class"
                data-something="my-td-only-data">
              Description1
            </td>
          </tr>
          <tr>
            <td class="my-name-class">Name2</td>
            <td class="my-description-class"
                data-something="my-td-only-data">
              Description2
            </td>
          </tr>
          <tr>
            <td class="my-name-class">Name3</td>
            <td class="my-description-class"
                data-something="my-td-only-data">
              Description3
            </td>
          </tr>
        </tbody>
      </table>
  
      Except it doesn't bother to prettify the output.