Стандартные кванторы в регулярных выражениях жадные, что означает, что они соответствуют столько, сколько они могут, только при необходимости возвращаясь, чтобы соответствовать остатку регулярного выражения.
Используя ленивый квантификатор, выражение сначала пытается выполнить минимальное совпадение.
blockquote>
Если вы просто хотите напечатать метку для каждого объекта, вы можете использовать цикл или понимание списка:
print [vertex.label for vertex in x]
Но чтобы ответить на ваш исходный вопрос, вам нужно определить __repr__
чтобы получить право вывода списка. Это может быть так просто:
def __repr__(self):
return str(self)
Если вы хотите получить немного больше информации, кроме ответа Даниэля Розмана:
__repr__
и __str__
- две разные вещи в python. (обратите внимание, однако, что если вы определили только __repr__
, вызов class.__str__
переводится в вызов class.__repr__
)
Цель __repr__
должна быть однозначной. Кроме того, когда возможно сервер, вы должны определить реестр так, чтобы (в вашем случае) eval(repr(instance)) == instance
С другой стороны, цель __str__
должна быть переименована; так что имеет значение, если вам нужно распечатать экземпляр на экране (для пользователя, возможно), если вам не нужно это делать, тогда не реализуйте его (и, опять же, если str в не реализован будет называться repr)
Кроме того, при типе вещей в интерпретаторе Idle он автоматически вызывает повторное представление вашего объекта. Или когда вы печатаете список, он вызывает list.__str__
(который идентичен list.__repr__
), который вызывает в свою очередь репрезентативное представление любого элемента, содержащего список. Это объясняет поведение, которое вы получаете, и, надеюсь, как его исправить