On 10/10/2010 7:02 PM, Steven D'Aprano wrote:
On Sun, 10 Oct 2010 18:14:33 -0400, John Posner wrote:

Class attributes are often used as "class constants", so how about
naming them with UPPERCASE names, like other constants? When you choose
to override one of these constants, like this:

     self.EGGS = 4

Er what?

If self.EGGS is meant as a constant, you shouldn't be re-assigning to it
*ever*.

That's why I prefaced my suggestion with, "I'm not sure I like this myself".


Apart from the ugliness of the attribute name, this does not differ in
the slightest from the current behaviour. How could it? Merely changing
the attribute name "eggs" to "NAME" can't change the behaviour.

Right. As I said the beginning of my message, I was proposing a "naming convention" only, not new functionality. The purpose of my example was to show how the naming convention would look in practice, not to demonstrate how new functionality would work.


Since nothing has changed, what's the point? What exactly is the
surprising behaviour that you are trying to flag?

No surprising behavior, just a surprising look:

  self.EGGS = ...

... which might remind the programmer what's going on -- the redefining of a "constant". This was just a suggestion; I hoped it might be helpful to the OP (or might suggest another, better approach to him). But perhaps he'll react to this suggestion, as Steven did, with "you shouldn't be re-assigning to it *ever*".

In my own (hobbyist, not professional) Python programs, I sometimes use ALL-CAPS names for parameters related to the size of the display screen. These parameters sort of "feel" constant, but they're not, given the multiplicity of screens and users' ability to adjust screen resolution.

-John Posner
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to