DRY and class variables
Eric Snow
ericsnowcurrently at gmail.com
Thu Sep 8 12:44:04 EDT 2011
More information about the Python-list mailing list
Thu Sep 8 12:44:04 EDT 2011
- Previous message (by thread): DRY and class variables
- Next message (by thread): [Python-ideas] relaxing keyword usage restrictions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Thu, Sep 8, 2011 at 3:55 AM, egbert <egbertum at xs4all.nl> wrote: > My classes correspond to sql tables. > In these classes I want to have several class variables > that refer to data that are common to all instances. > > The assignment statements for the class variables are the same > in all classes, except that of these instructions needs the name > of the class itself. That name is used to read a file with meta-data. > > So what I have now is something like this (simplified): > > class TableOne(object): > m = Metadata('TableOne') > m.do_something() > def __init__(self): > etc > > class TableTwo(object): > m = Metadata('TableTwo') > m.do_something() > def __init__(self): > etc > > I have tried: > - to eliminate the class name argument, but in this phase of the > object creation __class__ and __name__ are not available > - to move the two statements to a superclass, but the class variables > come in the superclass namespace, not in the subclass namespace. > > Any ideas ? Definitely an interesting problem I've run into before. Here are two solutions: 1. in Python 3, use the metaclass __prepare__() (see http://code.activestate.com/recipes/577813/); 2. in Python 2 or 3, use a descriptor to defer creating your Metadata objects until after the class object is available (see http://code.activestate.com/recipes/577745/). HTH -eric > e > -- > Egbert Bouwman - Keizersgracht 197 II - 1016 DS Amsterdam - 020 6257991 > ======================================================================== > -- > http://mail.python.org/mailman/listinfo/python-list >
- Previous message (by thread): DRY and class variables
- Next message (by thread): [Python-ideas] relaxing keyword usage restrictions
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list