Only __dict__ and __class__ are read-only instance attributes
diff --git a/Objects/classobject.c b/Objects/classobject.c
index f5a0d2a..27f1f26 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -494,8 +494,10 @@
 	object *v;
 {
 	object *func, *args, *res;
-	if (name[0] == '_' && name[1] == '_') {
-		int n = strlen(name);
+	if (name[0] == '_' && name[1] == '_'
+	    && (strcmp(name, "__dict__") == 0 ||
+		strcmp(name, "__class__") == 0)) {
+	        int n = strlen(name);
 		if (name[n-1] == '_' && name[n-2] == '_') {
 			err_setstr(TypeError, "read-only special attribute");
 			return -1;