Перегрузка оператора равенства - PullRequest
0 голосов
/ 28 апреля 2019

У меня небольшая проблема с правильной перегрузкой операторов сравнения.Я пытаюсь проверить полную идентичность 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 Ответ

1 голос
/ 28 апреля 2019

Ваш код использует self._name, а ваше сравнение использует self.name, поэтому он не может найти self.name, потому что он должен быть _name

...