Причиной этого являются специальные методы (__x__()
) определены для класса, а не для экземпляра.
Это имеет смысл, если вы думаете об __new__()
- было бы невозможно назвать это на экземпляре, поскольку экземпляр не существует, когда он вызывается.
Итак, вы можете сделать это в классе в целом, если хотите:
>>> A.__repr__ = __repr__
>>> a
A
Или на отдельный экземпляр, как в ответе kindall . (Обратите внимание, что здесь много общего, но я думал, что мои примеры добавлены достаточно, чтобы опубликовать это также).