Python 3.x 重载必要的运算符,以便不必写入

Python 3.x 重载必要的运算符,以便不必写入,python-3.x,Python 3.x,使用Python3从Think like a CS做一些练习: 有一项任务: 重载所需的运算符,而不必写入 if t1.after(t2):... 我们可以用更方便的 if t1 > t2: ... 我怎么能做到?没有想法。您需要重写类的t1.\ugt\ut2方法。我建议覆盖以下所有特殊功能 比如说 class Point: def __init__(self, x = 0, y = 0): self.x = x self.y = y

使用Python3从Think like a CS做一些练习: 有一项任务: 重载所需的运算符,而不必写入

if t1.after(t2):...
我们可以用更方便的

if t1 > t2: ... 
我怎么能做到?没有想法。

您需要重写类的t1.\ugt\ut2方法。我建议覆盖以下所有特殊功能

比如说

class Point:
    def __init__(self, x = 0, y = 0):
        self.x = x
        self.y = y


    def __lt__(self,other):
        self_mag = (self.x ** 2) + (self.y ** 2)
        other_mag = (other.x ** 2) + (other.y ** 2)
        return self_mag < other_mag
将允许您编写类似p1p2的表达式。但这可以做得很琐碎


编辑:结果表明,只需在使用functools的基础上覆盖_eq_uuuuu和_lt_uuuuu即可。@total_排序即可得到所需的结果

看看,还有。到目前为止你都做了些什么,你到底在哪里努力完成这项任务?让我们看看你到目前为止都做了些什么。您可以使用_gt__运算符。@rassar thx找到了。您应该在发布问题之前搜索堆栈溢出。关于操作符重载已经有很多答案了。这里有一个问题和几个问题: