Метод __str__ по умолчанию для экземпляра - PullRequest
0 голосов
/ 09 октября 2019

У меня есть класс без str или repr метода. И когда я называю это:

>>> from ingest.tpr import TPR
>>> t=TPR()
>>> t # that is, "repr(t)"
<ingest.tpr.TPR instance at 0x101eb8518>

Представление по умолчанию здесь выглядит примерно так:

"<${path_to_class} instance at ${memory_address}>"

Где предоставляется реализация по умолчанию? И вышеописанный метод __repr__ или метод __str__ - я знаю, что он вызывает метод __repr__, описанный выше, но оба метода __str__ и __repr__ инициализируются одинаково при запускеили один просто называет другого «отступлением». Другими словами, как по умолчанию __str__ и __repr__ выглядят в Python и где это будет определено?

1 Ответ

2 голосов
/ 09 октября 2019

t.__repr__ (то, что вызывает repr(t)) разрешается (при условии отсутствия других вышестоящих определений) object.__repr__, что определяется реализацией Python (например, https://github.com/python/cpython/blob/master/Objects/typeobject.c#L3827)

...