Of course you are getting into infinite recursion by calling method from itself:
def method_name(self):
return self.method_name()
You might wanted to call method of the base class?
def __hash__(self):
return super(ClassName, self).__hash__()