Python не вызывает специальные методы, те, у которых имя окружено __
экземпляром, но только на классе, по-видимому, для повышения производительности. Таким образом, нет возможности переопределить __repr__()
непосредственно на экземпляре и заставить его работать. Вместо этого вам нужно сделать что-то вроде этого:
class A(object):
def __repr__(self):
return self._repr()
def _repr(self):
return object.__repr__(self)
Теперь вы можете переопределить __repr__()
в экземпляре, заменив _repr()
.