Как преобразовать элемент памяти в строку в Python? - PullRequest
0 голосов
/ 07 октября 2018

Я хочу просмотреть строковое представление элемента памяти следующего кода: https://github.com/odoo/odoo/blob/11.0/addons/website_sale/controllers/main.py#L233

Когда я печатаю "keep", он выдает "odoo.addons.website.controllers.main.QueryURL объект в 0xb1438fac ".

Как на самом деле я могу преобразовать его в строковый ИЛИ читаемый человеком формат?

Оригинальный код класса QueryURL находится по ссылке ниже: https://github.com/odoo/odoo/blob/11.0/addons/website_sale/controllers/main.py#L233

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Поскольку у вас есть уведомления из полученного вывода, keep - это объект типа QueryURL.Поскольку это пользовательский объект, созданный из уже определенного класса, в нем отсутствуют методы __repr__() или __str__().Эти методы возвращают строку, которая представляет данные, хранящиеся в пользовательском классе.Если эти методы отсутствуют в вашем классе, функция print печатает адрес, где объект хранится в памяти.

Уже существующие классы, такие как int или str, имеют свои __repr__() уже определено.Следовательно, всякий раз, когда вы печатаете объект int, вы просматриваете его значение, а не адрес.

Для решения этой проблемы вы можете использовать два метода:

  1. Все, что вам нужно определитьэто пользовательский метод, который печатает необходимые данные из объекта на консоль (или где-либо еще).Вы можете либо определить функцию вне класса, которая возвращает требуемую строку (нужную вам строку, содержащую данные объекта), и вызвать эту функцию внутри print, например: print(functionWhichReturnsStringOfObject(Object)),
  2. Или простоотредактируйте определение класса и добавьте к нему метод __repr__(), который выполняет ту же функцию, что и функция выше.После этого вам просто нужно print(object)
0 голосов
/ 07 октября 2018

Глядя на источник для QueryURL , мне кажется, что для получения строкового представления вам нужно вызвать URL.Попробуйте:

print(keep())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...