Не удалось напечатать массив в python после добавления к нему значений [duplicate]

Из Регулярное выражение

Стандартные кванторы в регулярных выражениях жадные, что означает, что они соответствуют столько, сколько они могут, только при необходимости возвращаясь, чтобы соответствовать остатку регулярного выражения.

Используя ленивый квантификатор, выражение сначала пытается выполнить минимальное совпадение.

blockquote>

32
задан czardoz 17 October 2012 в 13:11
поделиться

2 ответа

Если вы просто хотите напечатать метку для каждого объекта, вы можете использовать цикл или понимание списка:

print [vertex.label for vertex in x]

Но чтобы ответить на ваш исходный вопрос, вам нужно определить __repr__ чтобы получить право вывода списка. Это может быть так просто:

def __repr__(self):
    return str(self)
42
ответ дан Daniel Roseman 27 August 2018 в 11:43
поделиться

Если вы хотите получить немного больше информации, кроме ответа Даниэля Розмана:

__repr__ и __str__ - две разные вещи в python. (обратите внимание, однако, что если вы определили только __repr__, вызов class.__str__ переводится в вызов class.__repr__)

Цель __repr__ должна быть однозначной. Кроме того, когда возможно сервер, вы должны определить реестр так, чтобы (в вашем случае) eval(repr(instance)) == instance

С другой стороны, цель __str__ должна быть переименована; так что имеет значение, если вам нужно распечатать экземпляр на экране (для пользователя, возможно), если вам не нужно это делать, тогда не реализуйте его (и, опять же, если str в не реализован будет называться repr)

Кроме того, при типе вещей в интерпретаторе Idle он автоматически вызывает повторное представление вашего объекта. Или когда вы печатаете список, он вызывает list.__str__ (который идентичен list.__repr__), который вызывает в свою очередь репрезентативное представление любого элемента, содержащего список. Это объясняет поведение, которое вы получаете, и, надеюсь, как его исправить

6
ответ дан Ant 27 August 2018 в 11:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: