Anyone ever overridden a builtin by accident?

John Ladasky ladasky at my-deja.com
Sun Sep 7 05:22:19 CEST 2003


Hi there,

Just wanted to share a frustrating programming bug that, when I
figured it out, made me gasp, and then laugh.

In one of my programs I wrote...

c = max(a,b)

...and I was getting the most annoying, frustrating error message: 
"type 'int' is not callable."

What the heck?  I wasn't calling an integer, I was calling the
__builtin__ function, max()!

I dropped out of my regular editor (SciTE), opened IDLE, and tried
typing in bits of my code, including the call to max().  Everything
seemed to work fine.

Then, I finally spotted the problem.  At the beginning of my program I
had defined a variable called "max"!  I had overridden the __builtin__
function by mistake.

Is there ever a good reason to override something in __builtin__? 
It's powerful, but potentially quite confusing.  Can the interpreter
be instructed to give a warning message when you do it?

Yes indeed, *everything* in Python is an object.  Let the newbie
beware!

--
John J. Ladasky Jr., Ph.D.
Department of Biology
Johns Hopkins University
Baltimore MD 21218
USA
Earth




More information about the Python-list mailing list