I'll move the the logic, and follow the specification then.

for the `_`, this is due to the fact that the `hash` function is a build-in function in python, and that is not a good idea to override the definition of build-in in general. In that particular scope it is not harmful, but I prefer to prepend the `_` on variable that share such a name.