On Thu, Feb 11, 2010 at 5:00 PM, Tom Berger <[email protected]> wrote: > On 11 February 2010 16:51, Barry Warsaw <[email protected]> wrote: >> Just a quick plea: >> >> When writing new model objects, or touching existing ones, please think about >> given them a useful __repr__(). This can greatly improve the introspection >> experience when using pdb or 'make harness'. >> >> Many/most of our model classes have no repr which means when you look at an >> object you get unhelpful output: >> >> >>> ls = getUtility(ILanguageSet) >> >>> ls.get(123) >> <Language at 0x12345678> >> >> and then you have to find the class definition and go digging into various >> attributes to figure out which object you have. Wouldn't it be much nicer to >> see: >> >> >>> ls.get(123) >> <Language: French (fr)> >> >> with no further effort? >> >> It's easy to do, too. E.g. I have a branch hopefully landing soon that adds >> this to class Language: >> >> def __repr__(self): >> return '<Language: %s>' % self.displayname >> >> A word of warning though: adding a repr to existing classes can break >> doctests >> far from the models you're modifying, so land such branches through ec2. > > I like the example you gave above, but I have a couple of questions: > > 1. The default repr is unique. Should we try and preserve that?
As a rule of thumb, I try to have repr(a) == repr(b) <==> (a == b), rather than (a is b). I don't know if that's standard or helps. > 2. Is there a style guide for repr? I don't know. Reckon we need one? jml _______________________________________________ Mailing list: https://launchpad.net/~launchpad-dev Post to : [email protected] Unsubscribe : https://launchpad.net/~launchpad-dev More help : https://help.launchpad.net/ListHelp

