Three Minor Feature Requests for 2.2

Raymond Hettinger othello at
Thu May 10 11:02:52 EDT 2001

James_Althoff at wrote:

> Personally, I think the "lazy" argument is compelling enough.  But the
> other argument in favor of "class C():" is that it would be very nice to
> have some empathy with programmers new to Python who in relying on
> "reasonable consistency" as a cornerstone of the "least surprise" principle
> find it strange to see that of the following four choices, neither of the
> two "reasonably consistent" ones work:
> def spam(): pass     # yes
> class Eggs(): pass   # no
> def spam: pass       # no
> class Eggs: pass     # yes
> def spam: pass       # no
> class Eggs(): pass   # no
> def spam(): pass     # yes
> class Eggs: pass     # yes

I see your point -- more than one way to do it is generally bad;
but I think it more confusing the way it stands now.  The users
first encounter with the subject is:

    >>> class MyClass():
    Traceback (  File "<interactive input>", line 1
        class MyClass():
    SyntaxError: invalid syntax

This is hardly a user friendly introduction to an unusual syntax
which has a special case format for zero length argument lists.

The flip side of "more than one way to do it" is that when a
programmer types something sensible and unambiguous
like "class MyClass():", the interpreter should "do the right thing"
instead of slapping your wrists.

All in all, it's not a big deal. It would just be nice to see it cleaned-up
leaving zero length tuples as the only syntactic oddity that we have to
live with.


More information about the Python-list mailing list