Есть ли способ печати словаря со всей информацией от объекта? - PullRequest
0 голосов
/ 24 мая 2019

У меня есть объект на Python.Во время анализа набора данных я создаю несколько объектов и сохраняю их в словаре на основе objectID

class TrackableObject:
    def __init__(self, objectID, centroid, timestart, timeend):
    # store the object ID, then initialize a list of centroids
    # using the current centroid
        self.objectID = objectID
        self.centroids = [centroid]
        self.timestart = timestart
        self.timeend = timeend

    #initialize a boolean used to indicate if the object has
    # already been counted or not
        self.counted = False
    def __str__(self):
        return str(self.objectID, self.timestart, self.timeend)
import pprint 
dictionary[objectID] = object 
pprint.pprint(dictionary)

, когда я печатаю окончательный словарь, я получаю:

{0: <pyimagesearch.trackableobject.TrackableObject object at 0x7f63fee54b70>,
 1: <pyimagesearch.trackableobject.TrackableObject object at 0x7f6458857668>,
 2: <pyimagesearch.trackableobject.TrackableObject object at 0x7f63fee54c50>,
 3: <pyimagesearch.trackableobject.TrackableObject object at 0x7f63fee54be0>,
 4: <pyimagesearch.trackableobject.TrackableObject object at 0x7f63fee54c18>,
 5: <pyimagesearch.trackableobject.TrackableObject object at 0x7f63fee70588>,
 6: <pyimagesearch.trackableobject.TrackableObject object at 0x7f63fee70438>,
 7: <pyimagesearch.trackableobject.TrackableObject object at 0x7f63fee70400>,
 8: <pyimagesearch.trackableobject.TrackableObject object at 0x7f63fee70630>,
 9: <pyimagesearch.trackableobject.TrackableObject object at 0x7f63fee70518>}

Но я бы хотелвидеть информацию с объекта.

{1: 1, 18:01, 21:01 2: 2, 15:34, 14:18 ...}

Любой способ печати словаря с информацией в объектах вместоинформации об объектах?

Ответы [ 3 ]

0 голосов
/ 24 мая 2019

__str__ возвращает неформальное или красиво печатаемое строковое представление объекта.Он используется print при прямой печати объекта.Но когда он находится внутри списка dict и вы печатаете контейнер, то используется официальное представление, которое определяется как __repr__.

TL / DR: заменить __str__ на __repr__:

def __repr__(self):
    return str(self.objectID, self.timestart, self.timeend)
0 голосов
/ 24 мая 2019

Когда вы печатаете словарь, repr вызывается для каждого элемента словаря.repr вызывает метод __repr__.Так что просто добавьте __repr__ к классу:

class TrackableObject:
    # some methods here including __str__ ...
    __repr__ == __str__
0 голосов
/ 24 мая 2019

Создать метод __repr__.Так же, как вы сделали __str__.

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