gpt4 book ai didi

默认比较表示的 Python 魔术方法?

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:09 25 4
gpt4 key购买 nike

如果我有一个要为其编写自定义比较函数的类,有没有一种方法可以定义要比较的“内容”而不是单独写出来?

class Version:
def __init__(self, major, minor, patch):
self.major = major
self.minor = minor
self.patch = patch

@property
def version(self):
return self.major, self.minor, self.patch

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

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

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

有点像,

class Version:
def __init__(self, major, minor, patch):
self.major = major
self.minor = minor
self.patch = patch

def __representation__(self):
return self.major, self.minor, self.patch

...对于所有类似比较的运算符,哪个会使用那个 __representation__

最佳答案

我不知道有什么方法可以一次性定义所有内容。然而 python 提供了 functools.total_ordering只需要编写 __eq__ 和一种比较魔术方法,然后添加所有其他方法的装饰器。

例子:

@total_ordering
class Version:
def __init__(self, major, minor, patch):
self.major = major
self.minor = minor
self.patch = patch

@property
def version(self):
return self.major, self.minor, self.patch

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

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

关于默认比较表示的 Python 魔术方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50916350/

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