Get rid of dict.has_key(). Boy this has a lot of repercussions!
Not all code has been fixed yet; this is just a checkpoint...
The C API still has PyDict_HasKey() and _HasKeyString(); not sure
if I want to change those just yet.
diff --git a/Modules/dbmmodule.c b/Modules/dbmmodule.c
index 9086c84..a75a9bd 100644
--- a/Modules/dbmmodule.c
+++ b/Modules/dbmmodule.c
@@ -206,12 +206,12 @@
 }
 
 static PyObject *
-dbm_has_key(register dbmobject *dp, PyObject *args)
+dbm_contains(register dbmobject *dp, PyObject *args)
 {
 	datum key, val;
 	int tmp_size;
 	
-	if (!PyArg_ParseTuple(args, "s#:has_key", &key.dptr, &tmp_size))
+	if (!PyArg_ParseTuple(args, "s#:__contains__", &key.dptr, &tmp_size))
 		return NULL;
 	key.dsize = tmp_size;
         check_dbmobject_open(dp);
@@ -277,8 +277,8 @@
 	 "close()\nClose the database."},
 	{"keys",	(PyCFunction)dbm_keys,		METH_NOARGS,
 	 "keys() -> list\nReturn a list of all keys in the database."},
-	{"has_key",	(PyCFunction)dbm_has_key,	METH_VARARGS,
-	 "has_key(key} -> boolean\nReturn true iff key is in the database."},
+	{"__contains__",(PyCFunction)dbm_contains,	METH_VARARGS,
+	 "__contains__(key} -> boolean\True iff key is in the database."},
 	{"get",		(PyCFunction)dbm_get,		METH_VARARGS,
 	 "get(key[, default]) -> value\n"
 	 "Return the value for key if present, otherwise default."},