可以与int进行比较的类

时间:2019-01-26 07:08:19

标签: python-3.x class types operator-overloading

我想要一个类Inf,以便可以编写类似的代码

>>> class Inf:
...   pass # TODO
...
>>> Inf > 3
True

我知道我可以做到

>>> class Inf:
...   def __gt__(self, other):
...     return True
...   def __lt__(self, other):
...     return False
...   def __eq__(self, other):
...     return type(self) == type(other)
...
>>> inf = Inf()
>>> inf > 3
True

但是我希望类本身能够与int进行比较,而不是实例能够与{ {1}}个。

我希望能够int而不是Inf > 3 # True

这是我的尝试,不起作用:

Inf() > 3 # True

Halp plz!

1 个答案:

答案 0 :(得分:1)

这几乎是不可能的,因为Inftype的实例,因此您要比较typeint的实例,因此方法{{1 __gt__()中的}}在这种情况下是没有用的。 而且我不知道有没有避免使用的理由:

Inf

因此,如果您确实需要比较class Inf: @classmethod def __gt__(cls, other): return True inf = Inf() print(inf > 3) ,请尝试编写一个class的子类,该子类具有被覆盖的type方法:

__gt__()