[Tutor] Sort of database & "family tree" question

spir denis.spir at free.fr
Wed Feb 4 09:27:24 CET 2009


Le Wed, 4 Feb 2009 01:16:17 +0000 (GMT),
ALAN GAULD <alan.gauld at btinternet.com> a écrit :

> > > And I assume you are reading these into a Person class and
> > > storing these classes in a persons dictionary? 
> 
> 
> > Can you explain this a little more for me please?
> 
> 
> Sure. 
> (I didn't notice this on gmane so apologies if others already answered)
> 
> > The current way of reading the data is this:
> > 
> > parser = ConfigParser.ConfigParser()
> > parser.read(personFile)
> > 
> > def get_info(person)
> >    infoDic = {}
> >    infoDic['first']      = parser.get(person, 'firstName')
> >    infoDic['last']       = parser.get(person, 'lastName')
> >    infoDic['father']   = parser.get(person, 'father')
> >    infoDic['mother'] = parser.get(person, 'mother')
> >    return infoDic
> 
> TYhis is almost the same but you are using a dict. A sligtly more readable version is to define a class Person:
> 
> class Person:
>      def __init__(self, parser):
>          self.first  = parser.get(person, 'firstName')
>          self.last   = parser.get(person, 'lastName')
>          self.father   = parser.get(person, 'father')
>          self.mother = parser.get(person, 'mother')
> 

Maybe I don't get the point, but I find it strange to make Person dependant not only of the data storage format, but also of the parsing technique. I would have written __init__ as usual so as to require the parser to deliver proper information -- not the contrary:

class Person:
    def __init__(self, first, last, father, mother):
        self.first  = first
        self.last   = last
        self.father   = father
        self.mother = mother

If the format evoluates --> adapt the parser
If the parser changes --> adapt it to Person's interface
But the Person model has its own meaning. It should change only if the application's specification evoluates.
 
Denis
------
la vida e estranya


More information about the Tutor mailing list