ここで何を意味するのか完全にはわかりませんが、次のように使用できます。__hash__
tuple
class Point(object):
def __init__(self,x,y,z):
self.x = x
self.y = y
self.z = z
def __hash__(self):
return hash((self.x,self.y,self.z))
def __eq__(self,other):
return (self.x,self.y,self.z) == (other.x,other.y,other.z)
現在、同じポイントを含むオブジェクトはすべて同じ値にハッシュされます。副次的な利点として、辞書のキーとして、またはセット オブジェクトでもう少し合理的に使用できるようになりました。
もちろん、これほど単純なクラスを作成する場合は、collections.namedtuple
代わりに を検討することをお勧めします。それをサブクラス化することもできます (すべてリンクで詳しく説明されています)。これには、オブジェクトが不変であるという利点があります-ハッシュ可能なオブジェクトを変更することは、良いことではありません;-)。また、オブジェクトには__dict__
関連付けられていないため、100M のオブジェクトを作成する場合は、記憶が少し楽になるでしょう。