input: Write a function to implement a hash table in Python that supports insert, delete, and retrieve operations. The function should include an init method to initialize the hash table with a fixed size of 256, an insert method to add key-value pairs to the hash table, a retrieve method to get the value associated with a given key, and a delete method to remove a key-value pair from the hash table. If the key is not found during retrieve, the method should return None. The function should be able to handle collisions using separate chaining.
  
  class HashTable:
      def __init__(self):
          self.table = [[] for _ in range(256)]
   
      def insert(self, key, value):
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  self.table[h][i] = (key, value)
                  return
          self.table[h].append((key, value))
   
      def retrieve(self, key):
          h = hash(key) % 256
          for kv in self.table[h]:
              if kv[0] == key:
                  return kv[1]
          return None
   
      def delete(self, key):
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  del self.table[h][i]
  
  assert HashTable().retrieve("nonexistent")==None
  
  hash_table = HashTable()
  hash_table.insert("key1", "value1")
  hash_table.insert("key2", "value2")
  assert hash_table.retrieve("key1")=="value1"
  assert hash_table.retrieve("key2")=="value2"
  
  hash_table.delete("key1")
  assert hash_table.retrieve("key1")==None
  assert hash_table.retrieve("key2")=="value2"
output: class HashTable:
      def __init__(self):
          self.table = [[] for _ in range(256)]
   
      def insert(self, key, value):
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  self.table[h][i] = (key, value)
                  return
          self.table[h].append((key, value))
   
      def retrieve(self, key):
          h = hash(key) % 256
          for kv in self.table[h]:
              if kv[0] == key:
                  return kv[1]
          return None
   
      def delete(self, key):
          h = hash(key) % 256
          for i, kv in enumerate(self.table[h]):
              if kv[0] == key:
                  del self.table[h][i]