Hi, This is my first attempt at new classes and dynamic python, so I am probably doing something very stupid... After reading the how-to for descriptors at http://users.rcn.com/python/download/Descriptor.htm I decided I would make an object that returns attributes on read, but on setting calls an arbitrary function.
My code looks like: class ActiveDAO(object): def __init__(self): self.__values__ = {} def add_field(self, name, value, on_change): self.__values__[name] = value def get(self): return self.__values__[name] def set(self, new_value): self.__values__[name] = on_change(new_value) def delete(self): raise AttributeError self.__dict__[name] = property(get, set, delete) However, when I try to use this (in a test) with code like: dao = ActiveDAO() dao.add_field("name", "value", lambda _: None) assertEqual(dao.name, "value") I get a failure because lookup of the attribute is returning "<property object at 0x6b8910>". That is quite reasonable, but I was under the expression that some magic was supposed to happen, as described in the document referenced above! Please can someone explain why there is no magic? :o( Thanks, Andrew PS I am using Python 2.5 on Linux -- http://mail.python.org/mailman/listinfo/python-list