【问题标题】:Overloading equality operator重载相等运算符
【发布时间】:2019-04-28 16:55:34
【问题描述】:

我在比较运算符的正确重载方面遇到了一点问题。我正在尝试检查同一类的 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'

我正在尝试更改 b/w 私有/受保护/公共,但我仍然无法使用运算符重载方法进行操作。

【问题讨论】:

  • 你只有_name

标签: python oop operator-overloading


【解决方案1】:

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

【讨论】:

  • @ii-k 如果这回答了您的问题,请将其标记为已回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 2011-01-20
  • 2011-06-24
  • 2016-01-20
相关资源
最近更新 更多