[Python-Dev] class Foo(object) vs class Foo: should be clearly explained in python 2 and 3 doc
Stephen J. Turnbull
stephen at xemacs.org
Sun Aug 10 11:13:51 CEST 2014
Chris Angelico writes:
> The justification is illogical. However, I personally believe
> boilerplate should be omitted where possible;
But it mostly can't be omitted. I wrote 22 classes (all trivial)
yesterday for a Python 3 program. Not one derived directly from
object. That's a bit unusual, but in the three longish scripts I have
to hand, not one had more than 30% "new" classes derived from object.
As a matter of personal style, I don't use optional positional
arguments (with a few "traditional" exceptions); if I omit one most of
the time, when I need it I use a keyword. That's not an argument,
it's just an observation that's consistent with support for using
an explicit parent class of object "most of the time".
> that's why we have a whole lot of things that "just work". Why does
> Python not have explicit boolification for if/while checks?
Because it does have explicit boolification (signaled by the control
structure syntax itself). No? I don't think this is less explicit
than REXX, because it doesn't happen elsewhere (10 + False == 10 --
not True, and even bool(10) + False != True).
> So, my view would be: Py3-only tutorials can and probably should omit
But this doesn't make things simpler. It means that there are two
syntaxes to define some classes, and you want to make one of them
TOOWTDI for classes derived directly from object, and the other
TOOWTDI for non-trivial subclasses. I'll grant that in some sense
it's no more complex, either, of course.
Note that taken to extremes, your argument could be construed as "we
should define defaults for all arguments and omit them where possible".
Of course for typing in quick programs, and for trivial classes,
omitting the derivation from object is a useful convenience. But I
don't think it's something that should be encouraged in tutorials.
More information about the Python-Dev