Как вывести объект в списке в строчном виде?
Есть код:
class Object:
def __init__(self, name, value):
self.name = name
self.value = value
def __str__(self):
return str(self.name) + ": " + str(self.value)
# Список - массив ссылок на объекты
test_list = [Object("Name", 32), 3405, "hello"]
print(test_list) # Выводит - [<__main__.Object object at 0x00000139E226FFD0>, 3405, 'hello']
test_list = list(map(str, test_list))
print(test_list) # Выводит - ['Name: 32', '3405', 'hello']
Вопрос:
- Почему объект не приводится к строке, хотя реализован метод str? Отдельно, не в списке, объект успешно приводится к строке ('Name: 32')
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Потому что при выводе на печать контейнера (спасибо GrAnd за уточнение) используется другой метод, который нужно реализовать в классе:
def __repr__(self):
return str(self)
Про сортировку у вас вопрос не дописан, но там тоже нужно реализовать некоторые методы класса. См. документацию, в современном питоне достаточно реализовать всего пару методов - один сравнения и один равенства и задекорировать класс специальным декоратором, остальное питон сделает сам.