gpt4 book ai didi

python - 在一个声明中覆盖所有 Python 比较方法

转载 作者:行者123 更新时间:2023-12-03 23:02:00 25 4
gpt4 key购买 nike

假设您有一个简单的类,如 A以下。除了比较本身之外,比较方法几乎都是相同的。是否有一种捷径可以在一种方法中声明六种方法以支持所有比较,例如 B ?
我问主要是因为B对我来说似乎更像 Pythonic,我很惊讶我的搜索没有找到这样的路线。

class A:
def __init__(self, number: float, metadata: str):
self.number = number
self.metadata = metadata

def __lt__(self, other):
return self.number < other.number

def __le__(self, other):
return self.number <= other.number

def __gt__(self, other):
return self.number > other.number

def __ge__(self, other):
return self.number >= other.number

def __eq__(self, other):
return self.number == other.number

def __ne__(self, other):
return self.number != other.number


class B:
def __init__(self, number: float, metadata: str):
self.number = number
self.metadata = metadata

def __compare__(self, other, comparison):
return self.number.__compare__(other.number, comparison)

最佳答案

functools模块提供total_ordering装饰器旨在提供所有比较方法,前提是您至少提供了 __lt__() 中的一种, __le__() , __gt__() , 或 __ge__() .
请参阅 Martijn Pieters 中的此答案.

关于python - 在一个声明中覆盖所有 Python 比较方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65071206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com