2009-01-14 38 views
5

这可能是一个有点常见问题,但我可以做这方面的帮助。我有一个类对象的列表,我试图弄清楚如何让它从该类中打印一个项目,而不是在该类中删除。蟒蛇 - 对象可读清单

<__main__.evolutions instance at 0x01B8EA08> 

而是显示所选对象类的选定属性。任何人都可以帮忙吗?

回答

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

你要覆盖类的“串”的方法:

class Foo: 
    def __str__(self): 
     return "String representation of me" 
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'ed来获得原始对象的副本。

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

print y 
-> Foo(5, 2)