The benefit of properties (was Re: PEP 8: on member variables vs. attributes)
sholden at holdenweb.com
Fri Jan 17 21:26:35 CET 2003
"Peter Hansen" <peter at engcorp.com> wrote ...
> Donn Cave wrote:
> > In my world, everyone who deals with code is eventually liable to care
> > how it works. Especially with regard to state changes or side effects.
> > Not so much because we're itching to exploit this knowledge for evil
> > violations of one kind or another, more because it's eventually the only
> > way to understand why it works the way it does. (Note ``eventually'',
> > I'm speaking of a last resort but a common one.) We can't afford to
> > make code opaque to anyone.
> One of the programmers, whom I respected very much on the project I
> mentioned, was quite of the opposite view to mine. He kept insisting
> that one shouldn't *want* to know what a given property does. He
> used the example of a library package, where "clearly" I shouldn't
> have to know about all the nitty-gritty details that go on under
> the hood.
> In the end, we found agreement based on one point: so long as one
> cannot *trust* that the library is *bomb-proof, bug-free, fully
> documented code*, there's a good chance one needs to know what is
> going on underneath, especially to work around problems or even
> just to figure out how to use the library.
> I was of the opinion that we were not using, or creating, such
> a library, and that therefore we had to insist on very limited
> use of properties.
> I guess I'm saying that the principle is sound, but practically I
> have yet to see a situation where it would work for me.
One reason why a property-based approach might work better in Python is its
superior exception handling, which (while it might produce some surprises,
just like database triggers can) at least allows property-handling errors to
be trapped outside.
Steve Holden http://www.holdenweb.com/
Python Web Programming http://pydish.holdenweb.com/pwp/
Bring your musical instrument to PyCon! http://www.python.org/pycon/
More information about the Python-list