On 20/10/06, Kent Johnson <[EMAIL PROTECTED]> wrote: > wesley chun wrote: > > on a related note, if you're using Python 2.4 and newer, you can > > simplfy your code a bit by replacing the call to property() with a > > decorator for x, as in: > > > > @property > > def x(): > > : > > I don't think so. This will wrap x itself as a property, equivalent to > x = property(x) > which is not the same as Lloyd's code which turns the dict returned by x > into a property: > x = property(**x())
There's some discussion in the cookbook about how to make a property decorator: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/410698 I'm not sure I'd use it, though --- seems a lot of effort to go to, when all it would do is trade "foo = property(**foo())" for "@Property".. There's also a good point made here: http://www.artima.com/forums/flat.jsp?forum=122&thread=119914 Basically, if you want a read-only attribute, you _can_ create it by using the built-in property as a decorator: @property def x(self): return self.__x equivalent to def x(self): return self.__x x = property(x) (which works because fget is the first keyword argument for property()) -- John. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor