diff --git a/Objects/dictobject.c b/Objects/dictobject.c
index bb527dd..e2e98db 100644
--- a/Objects/dictobject.c
+++ b/Objects/dictobject.c
@@ -2354,13 +2354,13 @@
 	PyObject_Del(ds);
 }
 
-static PyObject *
-dictview_length_hint(dictviewobject *ds)
+static Py_ssize_t
+dictview_len(dictviewobject *ds)
 {
 	Py_ssize_t len = 0;
 	if (ds->ds_dict != NULL)
 		len = ds->ds_dict->ma_used;
-	return PyInt_FromSize_t(len);
+	return len;
 }
 
 static PyObject *
@@ -2397,9 +2397,18 @@
 	return dictiter_new(ds->ds_dict, &PyDictIterKey_Type);
 }
 
+static PySequenceMethods dictkeys_as_sequence = {
+	(lenfunc)dictview_len,		/* sq_length */
+	0,				/* sq_concat */
+	0,				/* sq_repeat */
+	0,				/* sq_item */
+	0,				/* sq_slice */
+	0,				/* sq_ass_item */
+	0,				/* sq_ass_slice */
+	(objobjproc)0,			/* sq_contains */
+};
+
 static PyMethodDef dictkeys_methods[] = {
-	{"__length_hint__", (PyCFunction)dictview_length_hint, METH_NOARGS,
-         length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 
@@ -2417,7 +2426,7 @@
 	0,					/* tp_compare */
 	0,					/* tp_repr */
 	0,					/* tp_as_number */
-	0,					/* tp_as_sequence */
+	&dictkeys_as_sequence,			/* tp_as_sequence */
 	0,					/* tp_as_mapping */
 	0,					/* tp_hash */
 	0,					/* tp_call */
@@ -2454,9 +2463,18 @@
 	return dictiter_new(ds->ds_dict, &PyDictIterItem_Type);
 }
 
+static PySequenceMethods dictitems_as_sequence = {
+	(lenfunc)dictview_len,		/* sq_length */
+	0,				/* sq_concat */
+	0,				/* sq_repeat */
+	0,				/* sq_item */
+	0,				/* sq_slice */
+	0,				/* sq_ass_item */
+	0,				/* sq_ass_slice */
+	(objobjproc)0,			/* sq_contains */
+};
+
 static PyMethodDef dictitems_methods[] = {
-	{"__length_hint__", (PyCFunction)dictview_length_hint, METH_NOARGS,
-         length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 
@@ -2474,7 +2492,7 @@
 	0,					/* tp_compare */
 	0,					/* tp_repr */
 	0,					/* tp_as_number */
-	0,					/* tp_as_sequence */
+	&dictitems_as_sequence,			/* tp_as_sequence */
 	0,					/* tp_as_mapping */
 	0,					/* tp_hash */
 	0,					/* tp_call */
@@ -2511,9 +2529,18 @@
 	return dictiter_new(ds->ds_dict, &PyDictIterValue_Type);
 }
 
+static PySequenceMethods dictvalues_as_sequence = {
+	(lenfunc)dictview_len,		/* sq_length */
+	0,				/* sq_concat */
+	0,				/* sq_repeat */
+	0,				/* sq_item */
+	0,				/* sq_slice */
+	0,				/* sq_ass_item */
+	0,				/* sq_ass_slice */
+	(objobjproc)0,			/* sq_contains */
+};
+
 static PyMethodDef dictvalues_methods[] = {
-	{"__length_hint__", (PyCFunction)dictview_length_hint, METH_NOARGS,
-         length_hint_doc},
  	{NULL,		NULL}		/* sentinel */
 };
 
@@ -2531,7 +2558,7 @@
 	0,					/* tp_compare */
 	0,					/* tp_repr */
 	0,					/* tp_as_number */
-	0,					/* tp_as_sequence */
+	&dictvalues_as_sequence,		/* tp_as_sequence */
 	0,					/* tp_as_mapping */
 	0,					/* tp_hash */
 	0,					/* tp_call */
