OP

Added __eq__ and __hash__ to Op Class and deleted them in function with props attribute.
Because hash has a default implementation (at least in python 2).

As for \__eq__ object sort acts like it has one, but then again it's like a class method.  So it doesn't show up on super().