Robert Brewer wrote:
.......
..........

You *are* using a language with callable functions, right? ;)

#base.py

def create_special_property(cls, f):
   # create special property based on f

class M(type):
    def __init__(cls, name, bases, dict):
       super(M, cls).__init__(name, bases, dict)
       for f in dict['_fieldDefs']:
           create_special_property(cls, f)

#database.py
class C(A):
   _fieldDefs =[
     IntColumn('id',primaryKey=1,allowNull=0),
     TextColumn('name',allowNull=0,size=50),
     TextColumn('description',allowNull=1,size=50),
     ]

base.create_special_property(C, DateColumn('start_date'))

You're absolutely right :) I can modify the class in place if I have access to the required modifications.

This seems more easily assimilable and definitely works in my cases.
Would it make sense to put the def create_special_property inside the metaclass as it then becomes available as a class method of A as well as being visible as cls.create_special_property(f) in the metaclass __init__?


Slightly off-topic: if you really want to make it pretty, add a custom
descriptor so you can write:

class C(A):
   id = IntColumn(primaryKey=1,allowNull=0)
   name = TextColumn(allowNull=0,size=50)
   description = TextColumn(allowNull=1,size=50)


I'll certainly take a look at this

See UnitProperty (the descriptor), MetaUnit (the metaclass), and Unit
(the domain object) in http://www.aminus.org/rbre/dejavu/__init__.py for
an implementation of mine which you can steal in toto (because it's
public domain).


-- Robin Becker

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to