Я предпочитаю определять функцию __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)