[Python-Dev] Changes to PEP 327: Decimal data type

Michael Chermside mcherm at mcherm.com
Wed Mar 17 12:29:02 EST 2004


Oren writes:
> >     Decimal.fromFloat(floatNumber, positions)
> 
> +1 on the behavior. One nitpick about the method name: this caseConvention 
> is not consistent with the Python Style Guide (PEP 8)

It _IS_ consistant as I read it:

>     Function Names
> 
>       Plain functions exported by a module can either use the CapWords
>       style or lowercase (or lower_case_with_underscores).  There is
>       no strong preference, but it seems that the CapWords style is
>       used for functions that provide major functionality
>       (e.g. nstools.WorldOpen()), while lowercase is used more for
>       "utility" functions (e.g. pathhack.kos_root()).
   [...]
>     Method Names
> 
>       The story is largely the same as for functions.  Use lowercase
>       for methods accessed by other classes or functions that are part
>       of the implementation of an object type.  Use one leading
>       underscore for "internal" methods and instance variables when
>       there is no chance of a conflict with subclass or superclass
>       attributes or when a subclass might actually need access to
>       them.  Use two leading underscores (class-private names,
>       enforced by Python 1.4) in those cases where it is important
>       that only the current class accesses an attribute.  (But realize
>       that Python contains enough loopholes so that an insistent user
>       could gain access nevertheless, e.g. via the __dict__ attribute.)

I interpret that to mean that CapWords (fromFloat) is a perfectly valid 
style for method names. If I'm mis-interpreting it, please let me know.

And if I AM mis-interpreting it, then it's too bad. This is one minor
area where Java has a better design than Python. Both languages allow
any identifier, without considering case as significant. However,
Java has had a clear, well-defined, and well known convention since its
inception (CapWords for classes, lowercase for packages, lowerCapWords
for methods), while Python's convention is vaguely specified by PEP 8
and inconsistantly applied throughout the standard library and most
developer's code. The result is that in Java, I always know how to
spell a name, but in Python sometimes I have to look it up.

-- Michael Chermside





More information about the Python-Dev mailing list