这可能是一个有点常见问题,但我可以做这方面的帮助。我有一个类对象的列表,我试图弄清楚如何让它从该类中打印一个项目,而不是在该类中删除。蟒蛇 - 对象可读清单
<__main__.evolutions instance at 0x01B8EA08>
而是显示所选对象类的选定属性。任何人都可以帮忙吗?
这可能是一个有点常见问题,但我可以做这方面的帮助。我有一个类对象的列表,我试图弄清楚如何让它从该类中打印一个项目,而不是在该类中删除。蟒蛇 - 对象可读清单
<__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__
你要覆盖类的“串”的方法:
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)
这样做,这样,你有一个可读的字符串版本,并作为奖金可以eval'ed来获得原始对象的副本。
x = Foo(5, 1 + 1)
y = eval(str(x))
print y
-> Foo(5, 2)
+1指向__repr__。 – nosklo 2009-01-15 13:38:03