Anyone ever overridden a builtin by accident?
John Ladasky
ladasky at my-deja.com
Sat Sep 6 23:22:19 EDT 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