Auto generate Op.{hash,eq,str}

Added __eq__ and __hash__ to Op Class and deleted them in function with props attribute.
I don't get how '__props__' can be an empty tuple, if nothing needs to be passed through "__props__", can't we simply not add this class variable? Thus defering to the superclasses?