Python – Unique Collection Class – HashCode and Equals – (Like Java Set)

I will demonstrate in this post as we do in Python to have a collection of single objects (Set), implementing the standard methods key, hashcode and equals, so that the objects are not repeated.

class MyCustomClass:
def __init__(self, at1, at2, at3):
self.at1 = at1
self.at2 = at2
self.at3 = at3
def __key(self):
return (self.at2)
def __eq__(x, y):
return x.__key() == y.__key()
def __hash__(self):
return hash(self.__key())

my_object_1 = MyCustomClass('1', '2', '3')
my_object_2 = MyCustomClass('4', '5', '6')
my_object_3 = MyCustomClass('7', '8', '9')
my_object_2_dup = MyCustomClass('4', '5', '6')

set_collection = set()

set_collection.add(my_object_1)
set_collection.add(my_object_2)
set_collection.add(my_object_3)
set_collection.add(my_object_2_dup)

for object in set_collection:
print object.at2

The output of this script is:
8
2
5

Note that i added 4 objects, but only three is added because the second attribute is the Key.

See You,
Victor Jabur