On 01/03/2013 12:52 AM, Steven D'Aprano wrote:
On Wed, 02 Jan 2013 09:26:32 -0500, Dave Angel wrote:

Global const values should be ALL_CAPS, so it's obvious that nobody
intends to modify them.

Like math.pi I suppose? *wink*

:-)

It's the non-const global attributes that expect to be underscored.

Pylint is wrong here.

Ok, forget my previous post - now I looked a bit deeper into it again. Consider this as an example:

------------------------
# Global mouse states = global constants:
M_LEFT = 1
M_MIDDLE = 2
M_RIGHT = 3
M_WHEEL_UP = 4
M_WHEEL_DOWN = 5

class somethingWork:
    """ OpenGL something class """

    def __init__(self, someInputFile):
        self.inputFile = someInputFile
        self.running = False
        # self.viewport = (800,600)
        self.viewport = (1024, 768)
        self.lightDone = False
        self.rx = 0 # rotation x
        self.ry = 0 # rotation y
        self.rz = 0 # rotation z
        .... etc ...
------------------------

What pylint says is:

1) class somethingWork: Invalid name "somethingWork" (should match [A-Z_][a-zA-Z0-9]+$), I'm not that good at regular exps, but I suppose it wants my class name to start with a capital letter ?

2) self.lightDone: Invalid name "lightDone" (should match [a-z_][a-z0-9_]{2,30}$)

So I can now understand that pylint doesn't like my naming convention with a capital letter in the middle of the variable name, like: "lightDone" = a boolean value. I suppose pylint wants me to use (a little longer method) an underscore to separate words in long variable names...

3) self.rx / rself.ry / self.rz: Invalid name "rx" (should match [a-z_][a-z0-9_]{2,30}$) - so I suppose it wants this name to end with an underscore ?

I have a lot of these warnings...

The double-leading-and-trailing-underscore naming scheme is reserved for
Python itself. PEP 8 explicitly states not to invent your own "dunder"
names:

   __double_leading_and_trailing_underscore__: "magic" objects or
   attributes that live in user-controlled namespaces. E.g. __init__,
   __import__ or __file__. Never invent such names; only use them as
   documented.

I think I would also never use __something__ names...

The section on global variables does not say to use dunder names:

http://www.python.org/dev/peps/pep-0008/#id31

Thanks a lot for this reference...

If pylint says that global variables should be named like "__variable__",
that is explicitly going against PEP 8.

I don't think that is what it's saying... But I think it wants me to use more underscores, i.e. self.lightDone => self.light_done I think...

You shouldn't have to use those underscores very often.  After all,
there is seldom a need for a non-const global value, right?  Don't think
of it as a pylint problem, but as a hint from pylint that perhaps you
should use fewer globals.

That at least is good advice.

Ok, sorry for my previous post. This post better explains how I've named my variables. I don't like it complains about a simple and good variable name as self.rx, self.ry, self.rz and so on. These are IMHO very good variable names: rotation about x, y and z. Short and precise/accurate. I'm not sure if I'll agree with all the warnings it comes up with. But I think I could maybe introduce more use of underscores in the middle of my variable names, in the future...

Thanks for the extra + good explanations.






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

Reply via email to