[Python-Dev] Python roadmap

Guido van Rossum guido@python.org
Sat, 01 Feb 2003 14:09:26 -0500


> > There's one situation where I actually *do* think this is worth a
> > warning, or perhaps even an error.  When you import a module and
> > assign to an attribute of it that didn't exist before and has the name
> > of a built-in, you may change that module's meaning.  If this wasn't
> 
> Very good point.  Such behavior seems unlikely to me to be
> accidental (the usage "import X; X.Y=Z" is rare indeed), so I'm
> not sure warnings would help all that much -- but, _forbidding_
> this when Y names a built-in could indeed open the way to some 
> very useful optimizations in the future.

Exactly.

> Of course, enabling this optimization would also require a
> prohibition against "overriding" of built-ins by one's own versions
> -- I don't think that would be a great loss in terms of practical
> functionality.

There are very few builtins for which overriding is useful in
practice.  The only ones for which it is are __import__ (which was
designed with this in mind!) or open and file, which one might want to
replace with versions that do access checking in a restricted
execution environment.  I think we could make this list explicit.

People who override built-ins with versions they wrote themselves that
have different (extended) semantics are crazy.  People who add their
own functions to __builtin__ are lazy.  Neither deserves support. :-)

BTW, Alex, will you be at PyCon?  If not, will you be at Python UK the
next week?  If not, at EuroPython?

--Guido van Rossum (home page: http://www.python.org/~guido/)