Ни то, ни другое.
__repr__
вызывается только в тех случаях, когда вам нужна строка и получить объект, , например, из print
или в виде одного выражения в командной строке и подразумевается как читаемое человеком представление объекта, из которого (можно надеяться) можно восстановить.
Вспомните, что без перегрузки __repr__
то, что вы получите из командной строкиявляется строкой, обозначающей идентификатор , в отличие от значения объекта, например:
<__main__.TestClass at 0x20feb8836d8>
С другой стороны, что вы делаете сTestClass() == 5
- это значение сравнения.
Следовательно, оно будет оцениваться как True
, только если вы определили __eq__
, метод равенства:
class TestClass:
def __init__(self, a = 5):
self.a = a
def __eq__(self, other):
return self.a == other
print(TestClass() == 5)
Выход:
True