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

Reply via email to