Python - читаемый список объектов

Это, наверное, часто задаваемый вопрос, но я мог бы помочь в этом. У меня есть список объектов класса, и я пытаюсь понять, как заставить его печатать элемент из этого класса, а не отображать в;

<__main__.evolutions instance at 0x01B8EA08>

но вместо этого показать выбранный атрибут выбранного объекта класса. Кто-нибудь может с этим помочь?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
5
0
510
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ознакомьтесь с методами __str __ () и __repr __ ().

См. http://docs.python.org/reference/datamodel.html#object.__repr__

Вы захотите переопределить метод вашего класса "to string":

class Foo:
    def __str__(self):
        return "String representation of me"
Ответ принят как подходящий

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

print([obj.attr for obj in my_list_of_objs])

Что распечатает атрибут attr каждого объекта в списке my_list_of_objs. В качестве альтернативы вы можете определить метод __str__() для своего класса, который указывает, как преобразовать ваши объекты в строки:

class evolutions:
    def __str__(self):
        # return string representation of self

print(my_list_of_objs)  # each object is now printed out according to its __str__() method

Вам необходимо переопределить методы __str__ или __repr__ вашего объекта [s]

Я предпочитаю определять функцию __repr__, которая может реконструировать объект (когда это возможно). Если у вас также нет __str__, и repr(), и str() будут вызывать этот метод.

Так например

class Foo(object):
    def __init__(self, a, b):
        self.a = a
        self.b = b
    def __repr__(self):
        return 'Foo(%r, %r)' % (self.a, self.b)

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

x = Foo(5, 1 + 1)
y = eval(str(x))

print y
-> Foo(5, 2)

Другие вопросы по теме