Python - 可读的对象列表

5

这可能是一个比较常见的问题,但我需要在此方面获得帮助。我有一个类对象列表,我正在尝试弄清如何打印该类的一个项目,而不是在其中显示;

<__main__.evolutions instance at 0x01B8EA08>

但是相反,它要展示所选择类的一个已选属性。有人能提供帮助吗?
5个回答

8
如果你只想显示每个类实例的特定属性,可以这样做:
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

4

4

您需要重写类的 "to string" 方法:

class Foo:
    def __str__(self):
        return "String representation of me"

2

1

我的偏好是定义一个__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)

以这种方式进行,您将获得一个可读的字符串版本,并且作为奖励,它可以被 eval 以获取原始对象的副本。
x = Foo(5, 1 + 1)
y = eval(str(x))

print y
-> Foo(5, 2)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接