我试图使用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))
如果我的问题是荒谬的,请原谅我,并提前多多感谢。
答案 0 :(得分:4)
您需要在班级上定义__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
并不一定是最好的事情。您选择的实施取决于您。