diff --git a/Objects/fileobject.c b/Objects/fileobject.c
index 9195a24..0a6ccff 100644
--- a/Objects/fileobject.c
+++ b/Objects/fileobject.c
@@ -1783,8 +1783,6 @@
 #define OFF(x) offsetof(PyFileObject, x)
 
 static PyMemberDef file_memberlist[] = {
-	{"softspace",	T_INT,		OFF(f_softspace), 0,
-	 "flag indicating that a space needs to be printed; used by print"},
 	{"mode",	T_OBJECT,	OFF(f_mode),	RO,
 	 "file mode ('r', 'U', 'w', 'a', possibly with 'b' or '+' added)"},
 	{"name",	T_OBJECT,	OFF(f_name),	RO,
@@ -1829,10 +1827,44 @@
 	}
 }
 
+static PyObject *
+get_softspace(PyFileObject *f, void *closure)
+{
+	if (Py_Py3kWarningFlag &&
+	    PyErr_Warn(PyExc_DeprecationWarning,
+		       "file.softspace not supported in 3.x") < 0)
+		return NULL;
+	return PyInt_FromLong(f->f_softspace);
+}
+
+static int
+set_softspace(PyFileObject *f, PyObject *value)
+{
+	int new;
+	if (Py_Py3kWarningFlag &&
+	    PyErr_Warn(PyExc_DeprecationWarning,
+		       "file.softspace not supported in 3.x") < 0)
+		return -1;
+
+	if (value == NULL) {
+		PyErr_SetString(PyExc_TypeError,
+				"can't delete softspace attribute");
+		return -1;
+	}
+
+	new = PyInt_AsLong(value);
+	if (new == -1 && PyErr_Occurred())
+		return -1;
+	f->f_softspace = new;
+	return 0;
+}
+
 static PyGetSetDef file_getsetlist[] = {
 	{"closed", (getter)get_closed, NULL, "True if the file is closed"},
 	{"newlines", (getter)get_newlines, NULL,
 	 "end-of-line convention used in this file"},
+	{"softspace", (getter)get_softspace, (setter)set_softspace,
+	 "flag indicating that a space needs to be printed; used by print"},
 	{0},
 };
 
