重载相等运算符

时间:2019-04-28 16:55:35

标签: python oop operator-overloading

我对比较运算符的适当重载有一点问题。我正在尝试检查同一类的2个对象的完整身份。 我的逻辑是这样……

    def __init__(self, name, num):
        self._name = name
        self._scores = []
        for _ in range(num):
            self._scores.append(0)

    def __eq__(self, other):
        if self.name == other.name and self.num== other.num:
            for j in range(1, self.num):  # range from index 1
                if self.getScore(j) != other.getScore(j):
                    return False
            return True
        else:
            return False

我收到的是...:

AttributeError: 'MyClass' object has no attribute 'name'

我正在尝试将黑白更改为私有/受保护/公共,但仍然无法使用操作员重载方法进行操作。

1 个答案:

答案 0 :(得分:1)

您的代码使用self._name,而您的比较使用的是self.name,这就是为什么它找不到self.name的原因,因为它应该是_name