input: Write a function to implement a hash table in Python that supports insert, delete and retrieve operations. The hash table should handle key-value pairs, with a fixed size of 256 buckets. If the operation is successful, return True; otherwise, return False.
  
  
  assert my_hash_table = MyHashTable()
  assert my_hash_table.insert("key1", "value1") == True
  assert my_hash_table.retrieve("key1") == "value1"
  assert my_hash_table.delete("key1") == True
  assert my_hash_table.retrieve("key1") == None
  
output: class MyHashTable:
      def __init__(self):
          self.size = 256
          self.buckets = [[] for _ in range(self.size)]
  
      def _hash(self, key):
          return hash(key) % self.size
  
      def insert(self, key, value):
          index = self._hash(key)
          bucket = self.buckets[index]
          for i, (k, v) in enumerate(bucket):
              if k == key:
                  bucket[i] = (key, value)
                  return True
          bucket.append((key, value))
          return True
  
      def retrieve(self, key):
          index = self._hash(key)
          bucket = self.buckets[index]
          for k, v in bucket:
              if k == key:
                  return v
          return None
  
      def delete(self, key):
          index = self._hash(key)
          bucket = self.buckets[index]
          for i, (k, v) in enumerate(bucket):
              if k == key:
                  del bucket[i]
                  return True
          return False