Hacker News new | ask | show | jobs
by stoksc 2177 days ago
Yeah, overloading to build a little dsl over some objects sort of is something I’ve seen a lot. See airflow:

https://stackoverflow.com/questions/52389105/how-operator-de...

When it’s used that way, you’ve lost that the operation is semantically analogous to __le__. I think the assumption it has no side effects goes, too.

Edit: not saying I like it, though.

1 comments

Overloading comparison operators like this is a particularly bad idea in Python, because of the "smart" behavior they have baked in. Overloading >> is comparatively safe.

Unless you implement __ge__, `'Hello!' >= document` will also call __le__, which may or may not be what you want. And `'Hello!' >= document <= 10` is equivalent to `'Hello!' >= document and document <= 10`, which can lead to confusing surprises.

(Brython does implement all of those pitfalls faithfully)