Why new Python 2.5 feature "class C()" return old-style class ?

looping kadeko at gmail.com
Tue Apr 11 09:49:58 EDT 2006


bruno at modulix wrote:
> looping wrote:
> > Peter Hansen wrote:
> >
> >>Georg Brandl wrote:
> >>
> >>>class C():
> >>>
> >>>is meant to be synonymous with
> >>>
> >>>class C:
> >>>
> >>>and therefore cannot create a new-style class.
> >>
> >>I think "looping" understands that, but is basically asking why anyone
> >>is bothering with a change that involves a part of the language that is
> >>effectively deprecated.  In other words, class(): never used to be
> >>valid, so why make it valid now?
> >>
> >>-Peter
> >
> >
> > Exact.
> > But I think that if we make "class C():" a synonym of "class
> > C(object):", it will save lot of keystrokes ;-)
>
> Since the class statement without superclass actually creates an
> old-style class,  I'd expect the "class MyClass():" variant to behave
> the same. Sacrifying readability and expliciteness just to save half a
> dozen keystrokes is not pythonic IMHO.
>

I don't think readability suffer and expliciteness could sometimes be
sacrified to simplify the life of developer: ex "abcd"[0:3]  ->
"abcd"[:3].
And for newbies, the somewhat magic behavior of the "object" superclass
is not so clear even that it is very explicit.
When I write script I don't use new-style class cause is bother me to
type "(object)" when I don't need their features. But in an other hand,
I believe that new-style class are faster to instanciate (maybe I'm
wrong...).
So this new syntax is a good way to boost their uses without bother
with compatibility of existing code IMHO.

Well I stop to argue now and let Python Dev make their (very good) job.




More information about the Python-list mailing list