メソッド __contains__ は何処に

メソッド __contains__ は、演算子 in の動作を規定します。

class HashTable:
def __contains__(self, key):
return bool(self._detect(key)) # CAUTION

前述した補助関数 _detect を利用して、指定したキー key を含む連結リストが存在するなら True を、存在しないなら False を、それぞれリターン値とします。ここで注意して欲しいのは、補助関数 _detect は、None と評価され得ることです。そのため、bool() を利用しています。

class LinkedList:
def __contains__(self, key):
for k in self.keys():
if key == k: return True
else:
return False

同じキー key を持つ要素が「1つでも」存在するなら、True をリターン値とします。存在しないなら、False をリターン値とします。