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 it,
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.