[Tutor] Class definitions
dn
PythonList at DancesWithMice.info
Mon Jan 1 20:08:38 EST 2024
On 2/01/24 12:53, Alan Gauld via Tutor wrote:
> On 01/01/2024 22:05, dn via Tutor wrote:
>> Are you training folk, or requiring in Code Reviews, the use of
>> parentheses in stand-alone class definitions (or not)?
>>
>
> I'm not quite sure who you are addressing here?
When helping folk start-out, the preference is to go with the one and
only one way to do things.
Code Review is about (organisational) convention.
>> Accordingly, wondered if you feel there is virtue in writing class-names
>> without parentheses, and only moving to such syntax upon reaching more
>> advanced levels involving inheritance (and multiple-inheritance)?
>
> My personal take is that it would have been consistent with
> Python's "explicit is better" approach if class definitions
> always required the parens with object where appropriate
>
> class MyClass(object):
>
> Even though it meant more typing.
A useful concept to understand - but often rather too theoretical for
first-timers.
Which has been true only since 'new style types' were brought-in
(somewhere back in the mists of Python 2.n history). Thus, one of
several changes to the way we define custom-classes.
> But Guido obviously thought different and we are stuck with
> the definition structures. Since the idiomatic way of writing
> it is to omit the parens that's what I do and encourage others
> to do too. Idioms are powerful tools.
That's what I was wondering. Is there some authoritative statement for this?
OTOH it seems a little odd, that some classes are defined with
parentheses and others not.
Hence the 'full' parentheses indicate a sub-class, whereas the 'empty'
ones indicate a super-class or something that stands-alone and outside
of any hierarchy.
Consulting PEP-008 (latest update, last month) there is considerable
discussion about "Designing for Inheritance" (much of which curls the
hair of SOLID OOP-ers) but no mention of parentheses (that I noticed).
Although, the one code-example does feature the ubiquitous Cartesian
Co-ordinate as "class Point:"!?
--
Regards,
=dn
More information about the Tutor
mailing list