[Python-Dev] PEP 8 updates/clarifications

Barry Warsaw barry at python.org
Wed Dec 14 20:59:36 CET 2005


On Tue, 2005-12-13 at 07:26 -0500, Jim Fulton wrote:

> I'd add somewhere: "If in doubt, chose non-public. You can always change your
> mind later."

Added.

> 
> >       We don't use the term "private" here, since no attribute is really
> >       private in Python (without a generally unnecessary amount of work).
> >       However, another category of attribute are those which, while not being
> >       public, are intended for use by subclasses (often called "protected" in
> >       other languages).  Some classes are designed to be inherited from,
> >       either to extend or modify aspects of the class's behavior.  When
> >       designing such a class, take care to make explicit decisions about which
> >       attributes are public, which are non-public but useful for subclasses, and
> >       which are truly only to be used by your base class.
> 
> A useful term might be "subclass API".  Decide which non-public attributes
> are part of the subclass API.

Excellent suggestion, thanks.  I like the term "subclass API".  Added.

> >       - For simple public data attributes, it is fine to expose just the
> >         attribute name, without complicated accessor/mutator methods.  Keep in
> >         mind that Python provides an easy path to future enhancement, should
> >         you find that a simple data attribute needs to grow functional
> >         behavior.  In that case, use properties to hide functional
> >         implementation behind simple data attribute access syntax.
> > 
> >         Note 1: Properties only work on new-style classes.
> > 
> >         Note 2: Try to keep the functional behavior side-effect free, although
> >         side-effects such as caching are generally fine.
> 
> Personally, I'd actively discourage use of trivial accessors.  Simple
> attribute access is not only "fine", IMO, but it is much better than
> trivial accessors.  This is an important point, IMO, because, in my
> experience, the vast majority of accessors *are* trivial.

I've changed "fine" to "best".

-Barry

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 307 bytes
Desc: This is a digitally signed message part
Url : http://mail.python.org/pipermail/python-dev/attachments/20051214/9f782435/attachment.pgp


More information about the Python-Dev mailing list