Phlip wrote: > Pythonistas: > > Here's the property decorator: > > @property > def foo(self): return 'bar' > > If I generate foo dynamically, how to I make it a property? > > setattr(self, 'foo', property(lambda: 'bar')) > > Variations of that are apparently not working.
You have to put the property descriptor into the class, not an instance: >>> class A(object): ... pass ... >>> a = A() >>> setattr(type(a), "foo", property(lambda self: "FOO")) >>> a.foo 'FOO' >>> A().foo 'FOO' > (I'm heading for a proxy pattern, where if you never call the > generated prop, you never hit the database to load it into memory.) You may be better off with __getattr__(). Peter -- http://mail.python.org/mailman/listinfo/python-list