Это, наверное, часто задаваемый вопрос, но я мог бы помочь в этом. У меня есть список объектов класса, и я пытаюсь понять, как заставить его печатать элемент из этого класса, а не отображать в;
<__main__.evolutions instance at 0x01B8EA08>
но вместо этого показать выбранный атрибут выбранного объекта класса. Кто-нибудь может с этим помочь?






Ознакомьтесь с методами __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
Я предпочитаю определять функцию __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)