On Thu, May 10, 2012 at 11:33 PM, Andreas Tawn <andreas.t...@ubisoft.com> wrote: > Say I've got a class... > > class test(object): > def __init__(self): > self.foo = 1 > self.bar = 2 > self.baz = 3 > > I can say... > > def __str__(self): > return "foo: {0}\nbar: {1}\nbaz: {2}".format(self.foo, self.bar, self.baz)
This might be of use: return """foo: {foo} bar: {bar} baz: {baz}""".format(**self.__dict__) You're repeating yourself a bit, but this allows the labels to differ from the format tags. If you're certain that you don't need that flexibility, you could generate the format string dynamically: return "\n".join(x+": {"+x+"}" for x in ("foo","bar","baz")).format(**self.__dict__) That scales more nicely as the number of elements desired increases (while still being 100% explicit - the presence and order of elements is governed by the tuple), but is a bit inflexible and complicated. I'd be inclined toward the triple-quoted-string one. Tim Toady. ChrisA -- http://mail.python.org/mailman/listinfo/python-list