On 1/26/05 at 1:48 pm, Terry Reedy wrote:
> For basic builtin objects, repr(ob) generally produces a string that when
> eval()ed will recreate the object. IE
> eval(repr(ob) == ob # sometimes
I've found extending this property to your own classes often fairly easy
to implement (and useful). For example:
> class person:
> def __init__(self, name="", age=0, friends=None, comment=""):
> if friends is None:
> friends = []
> self.name, self.age, self.friends, self.comment = name, age, friends,
> comment
>
> def __repr__(self):
> return ("person(" + repr(self.name) + ", " + repr(self.age) + ", " +
> repr(self.friends) + ", " + repr(self.comment) + ")")
>
> me = person()
>
> print "me =", repr(me)
Which produces the following output:
me = person('', 0, [], '')
In addition, the following constructs are possible:
> family = [
> person("Martin", 50, ["Matt"], "eldest son"),
> person("Matt", 43, ["Martin"], "youngest son"),
> person("Merry", 72, ["Martin", "Matt"], "mother"),
> person("Luther", 82, ["Merry"], "father")
> ]
>
> print "family =", repr(family)
Which output the following:
family = [person('Martin', 50, [], 'eldest son'), person('Matt', 43,
['Martin'], 'youngest son'), person('Merry', 72, ['Martin', 'Matt'],
'mother'), person('Luther', 82, ['Merry'], 'father')]
Basically this approach allows you to store your data in Python source
files -- which you can then import or execfile. The files can also
contain comments and are relatively easy to edit by hand. In addition
they're portable.
Best,
Martin
--
http://mail.python.org/mailman/listinfo/python-list