1

我正在尝试使用 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))

如果我的问题是荒谬的,请原谅,并提前非常感谢。

4

1 回答 1

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在这里使用不一定是最好的选择。您选择的实施取决于您。

于 2013-09-16T10:47:50.493 回答