Как вставить новую строку каждой записи в словаре? - PullRequest
0 голосов
/ 13 января 2020
def __repr__(self):
    'shows all city attributes'
    return str(self.__dict__).strip('{}').replace("'", "")

У меня есть в моем классе следующее:

    name: Jerusalem, center: (31, 35), central_station: (19.7, 25.22), num_residents: 900000, num_neighborhoods: 58

Как я могу изменить его на (каждая деталь в новой строке):

    name: Jerusalem
    center:(9, 20)
        ...
        ...

и на самом деле у меня есть другой вопрос - есть ли лучший способ сделать этот список?

1 Ответ

0 голосов
/ 13 января 2020

Вы можете перебирать определения и применять формат к каждому элементу, например так ...

class Foo:
    def __repr__(self):
        '''shows all city attributes'''
        line_format = '%s : %s'
        return "\n".join([line_format % (key, str(value)) for key, value in self.__dict__.items()])

и использование будет выглядеть следующим образом ...

a = Foo()
a.a = "Hello"
a.b = "World"
a.c = (1, 2, 3)
print(a)
a : Hello
b : World
c : (1, 2, 3)

Теперь, если вы хотите изменить формат своей презентации, вы можете просто изменить line_format на что-то вроде "%s -> %s" или каким-либо другим способом представления данных.

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