У меня есть список объектов. Я пытаюсь вывести осмысленное представление объектов в списке, которое показывает некоторые из переменных экземпляра, используя string formatting capability, встроенный в последние версии Python. Я использую Python 3.3.0.Пользовательское форматирование строк для списка объектов
Я определил метод __str__
в классе для объектов в моем списке. Если я пытаюсь напечатать отдельный объект, я получаю представление, возвращаемое методом __str__
. Но если я попытаюсь распечатать весь список, я получаю общее представление, как будто я не определил метод __str__
. Вот пример:
class CustomClass:
def __init__(self):
self.instanceVar = 42
def __str__(self):
return "{} (instanceVar = {})".format(self.__class__.__name__, self.instanceVar)
testObject = CustomClass()
print("{}".format(testObject))
# CustomClass (instanceVar = 42)
print("{}".format([testObject]))
# [<__main__.CustomClass object at 0x1006cbed0>]
Как я могу получить 2-ое заявление для печати, чтобы напечатать что-то вроде [CustomClass (instanceVar = 42)]
? Можно ли это сделать, просто передав правильную строку формата функции print
или она более сложная?
вы можете переопределить '__repr__' слишком – GP89
@Joran Бизли и unutbu, вы оба дали полезные ответы. Джоран, я решил принять ваш ответ, так как вы ответили первым. –
Возможный дубликат [Как применить \ _ \ _ str \ _ \ _ функцию при печати списка объектов в python] (http://stackoverflow.com/questions/3558474/how-to-apply-str-function-when -printing-a-list-of-objects-in-python) –