diff Objects/typeobject.c @ 47466:58f4b60773fe

Merged revisions 63856-63857,63859-63860 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r63856 | robert.schuppenies | 2008-06-01 18:16:17 +0200 (So, 01 Jun 2008) | 2 lines Issue #2898: Added sys.getsizeof() to retrieve size of objects in bytes. ........ r63859 | georg.brandl | 2008-06-01 18:42:16 +0200 (So, 01 Jun 2008) | 2 lines Some style nits. Also clarify in the docstrings what __sizeof__ does. ........ r63860 | georg.brandl | 2008-06-01 19:05:56 +0200 (So, 01 Jun 2008) | 2 lines Fix test_descrtut. ........
author Martin v. Löwis <martin@v.loewis.de>
date Wed, 04 Jun 2008 14:18:43 +0000
parents 23ab586c427a
children 98827a21e352
line wrap: on
line diff
--- a/Objects/typeobject.c	Wed Jun 04 14:03:46 2008 +0000
+++ b/Objects/typeobject.c	Wed Jun 04 14:18:43 2008 +0000
@@ -3275,6 +3275,20 @@
         return result;
 }
 
+static PyObject *
+object_sizeof(PyObject *self, PyObject *args)
+{
+	Py_ssize_t res, isize;
+
+	res = 0;
+	isize = self->ob_type->tp_itemsize;
+	if (isize > 0)
+		res = Py_SIZE(self->ob_type) * isize;
+	res += self->ob_type->tp_basicsize;
+
+	return PyLong_FromSsize_t(res);	 
+}
+
 static PyMethodDef object_methods[] = {
 	{"__reduce_ex__", object_reduce_ex, METH_VARARGS,
 	 PyDoc_STR("helper for pickle")},
@@ -3284,6 +3298,8 @@
 	 object_subclasshook_doc},
         {"__format__", object_format, METH_VARARGS,
          PyDoc_STR("default object formatter")},
+        {"__sizeof__", object_sizeof, METH_NOARGS,
+         PyDoc_STR("__sizeof__() -> size of object in memory, in bytes")},
 	{0}
 };