PEP 8 and properties

Ian Bicking ianb at
Thu Jan 23 22:22:59 CET 2003

On Mon, 2003-01-20 at 20:41, John Roth wrote:
> I think so. As far as I'm concerned, the difference
> is that a variable is something, while a method does
> something. I know this isn't as clear a distinction as
> I'd like, but then, most things have real fuzzy edges.

This was my initial thought too.  Or I'd say, anything that has side
effects should be a method.  So I've been using properties for
calculated or dependent values, so I might have a color object that has
red, green, and blue attributes.  It also has hue, saturation, and value
attributes.  Red, green and blue are orthogonal to each other (though of
course limited to be numbers, etc).  But they are not orthogonal to hue,
saturation and value.  Obviously one of these is calculated, though it
could actually be either one.  Or heck, hue, value and green could be
the master attributes (if I wanted to work out the math :).

But okay, I'm fine with that.  I'm also okay with side effects that are
for caching purposes.  If you have calculated values it's only normal to
add caching at some point in the process, and you don't want to change
the interface in order to do that.  I'm also okay with side effects that
might even involve writing a cached value to disk.

But then there's other calculated values I'm not so sure about.  In this
example maybe something like isBlack.  It's kind of calculated, but it's
constant for the color (assuming the color is immutable).  It would
certainly never take an argument.  But I'm a little less comfortable
with this... somehow it seems wrong for a test to be an attribute, and
not a function.  But I know a lot of languages with properties use this
style often.

I feel like there's other cases I haven't come up with, where the rules
I've decided on so far don't apply, or they do but I disagree with them
for that case.  There's no Python convention to go on in these cases,

Ian Bicking           Colorstudy Web Development
ianb at
PGP: gpg --keyserver --recv-keys 0x9B9E28B7
4869 N Talman Ave, Chicago, IL 60625 / (773) 275-7241

More information about the Python-list mailing list