style guideline for naming variables?
Duncan Smith
buzzard at urubu.freeserve.co.uk
Fri Mar 17 20:18:33 EST 2006
John Salerno wrote:
> After reading the PEP, I'm still not quite sure if there is a
> recommended (or widely preferred) method of naming variables. Here are
> the relevant bits:
>
>> Global Variable Names
>>
>> (Let's hope that these variables are meant for use inside one
>> module
>> only.) The conventions are about the same as those for functions.
>>
>> Modules that are designed for use via "from M import *" should
>> use the
>> __all__ mechanism to prevent exporting globals, or use the the
>> older
>> convention of prefixing such globals with an underscore (which
>> you might
>> want to do to indicate these globals are "module non-public").
>>
>> Function Names
>>
>> Function names should be lowercase, with words separated by
>> underscores
>> as necessary to improve readability.
>>
>> mixedCase is allowed only in contexts where that's already the
>> prevailing style (e.g. threading.py), to retain backwards
>> compatibility.
>
>>
>
>> Method Names and Instance Variables
>>
>> Use the function naming rules: lowercase with words separated by
>> underscores as necessary to improve readability.
>>
>> Use one leading underscore only for non-public methods and instance
>> variables.
>>
>> To avoid name clashes with subclasses, use two leading
>> underscores to
>> invoke Python's name mangling rules.
>>
>> Python mangles these names with the class name: if class Foo has an
>> attribute named __a, it cannot be accessed by Foo.__a. (An
>> insistent
>> user could still gain access by calling Foo._Foo__a.)
>> Generally, double
>> leading underscores should be used only to avoid name conflicts
>> with
>> attributes in classes designed to be subclassed.
>>
>> Note: there is some controversy about the use of __names (see
>> below).
>
>
> It refers to instance variables, which I assume includes all variables
> that aren't global, and the suggestion is to follow function
> conventions, which would be this:
>
> some_function
>
> But this seems awkward to me. someFunction seems nicer, but it is
> specifically mentioned not to do this for new code.
>
> So I'm just curious how other people handle the multiword situation.
> Underscores, or Pascal case?
SomeClass
someFunction
some_variable
FWIW
Duncan
More information about the Python-list
mailing list