gpt4 book ai didi

python - 测试一个类的不同实例是否相等

转载 作者:太空宇宙 更新时间:2023-11-04 10:43:51 24 4
gpt4 key购买 nike

我正在尝试使用 assert() 来检查一个简单类的内容,而无需检查该类的每个成员。像下面这样的可能吗?

def class class_data(object):
def __init__ (self, name = 'Richie', school = 'Jefferson High', age = 17):
self.name = name
self.school = school
self.age = age


myschool = class_data()

#check for correct data via assert
assert (myschool == class_data('Fonzie', 'Lincoln High', 17))

如果我的问题毫无意义,请原谅,在此先感谢您。

最佳答案

您需要定义 __eq__类上的方法。

当你执行 myschool == other 时,Python 将调用 myschool.__eq__(other),默认情况下它只是检查两个对象是否相同(在你的情况下,他们不是)。

您可以覆盖 __eq__ 来实现您的目的,这是一个示例:

def class class_data(object):
def __init__ (self, name = 'Richie', school = 'Jefferson High', age = 17):
self.name = name
self.school = school
self.age = age

def __eq__(self, other):
for attr in ("name", "school", "age"):
if getattr(self, attr) != getattr(other, attr):
return False
return True

注意:在这里使用 getattr 不一定是最好的选择。您选择的实现方式由您决定。

关于python - 测试一个类的不同实例是否相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18826107/

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