这可能是一个比较常见的问题,但我需要在此方面获得帮助。我有一个类对象列表,我正在尝试弄清如何打印该类的一个项目,而不是在其中显示;
<__main__.evolutions instance at 0x01B8EA08>
但是相反,它要展示所选择类的一个已选属性。有人能提供帮助吗?
print([obj.attr for obj in my_list_of_objs])
这将打印出列表my_list_of_objs
中每个对象的attr
属性。或者,你可以为你的类定义__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__() 方法。
参见 http://docs.python.org/reference/datamodel.html#object.__repr__
您需要重写类的 "to string" 方法:
class Foo:
def __str__(self):
return "String representation of me"
我的偏好是定义一个__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)