Both in Zope2 and in Django you need to work with attributes called id. This is a shame since it's such a huge pitfall. Despite having done Python programming for so many years I today fell into this pitfall twice!! The pitfall is that id is a builtin function, not a suitable variable name. The reason is that I was changing a complex app to use something called the UUID as the indentifier instead of the ID which happened to be a name of a primary key in a table.

This meant lots of changes and I tested and tested and kept getting really strange errors. I took the whole thing apart and put it back together when I discovered my error of checking if variable id was set or not. id, if undefined, defaults to the builtin function id() which will always return true on bool(id).

It's been a long day. I'm going home. Two newbie mistakes in one programming session. I'm sure I'm not the only one who's been trapped by this.

Comments

Roberto

I've done that a lot too, now I just use id_ as the variable name.

Peter Bengtsson

I've changed most places to 'oid' as in "object ID".

nih

this is also common in wxPython, i only realised this was an issue after running one of my programs through pylint, which flags up something like 'using builtin function id', so i'm now also using id_

Your email will never ever be published.

Previous:
Why we like Obama, short answer: his speeches September 11, 2008 Politics
Next:
The importance of env (and how it works with virtualenv) September 18, 2008 Python
Related by category:
A Python dict that can report which keys you did not use June 12, 2025 Python
Autocomplete using PostgreSQL instead of Elasticsearch December 18, 2025 Python
Comparison of speed between gpt-5, gpt-5-mini, and gpt-5-nano December 15, 2025 Python
Using AI to rewrite blog post comments November 12, 2025 Python
Related by keyword:
Sequences in PostgreSQL and rolling back transactions May 12, 2009 Linux
Note to self about Jeditable November 22, 2007 JavaScript