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