[Python-ideas] Programming recommendations (PEP 8) and boolean values
Stephen J. Turnbull
stephen at xemacs.org
Thu Aug 9 09:33:36 CEST 2012
Ben Finney writes:
> Oleg Broytman <phd at phdru.name> writes:
>
> > On Thu, Aug 09, 2012 at 02:18:53AM +1000, Ben Finney <ben+python at benfinney.id.au> wrote:
> > > What is a compelling use case for checking precisely for True or False?
> >
> > To distinguish False and None for a tri-state variable that can
> > have 3 values - "yes", "no" and "unspecified" - True, False and None
> > in Python-speak.
>
> Since True and False are strongly coupled with a *two*-state type, that
> just seems needlessly confusing to the reader of the code. Better to use
> a non-bool type which makes it explicit that there are three valid
> values.
I occasionally use an abstract base class that initializes a Boolean
member to None, and assert "is not None" in testing or validation
code. I wouldn't call it "compelling," but I find this convention
very useful in validating my own code, as if such variables weren't
properly initialized in a derived class, I probably screwed up
something else, too.
More information about the Python-ideas
mailing list