diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst
index 50115ab..ab290e7 100644
--- a/Doc/library/collections.rst
+++ b/Doc/library/collections.rst
@@ -628,9 +628,7 @@
            'Return a new OrderedDict which maps field names to their values'
            return OrderedDict(zip(self._fields, self))
    <BLANKLINE>
-      __dict__ = property(_asdict)
-   <BLANKLINE>
-      def _replace(_self, **kwds):
+       def _replace(_self, **kwds):
            'Return a new Point object replacing specified fields with new values'
            result = _self._make(map(kwds.pop, ('x', 'y'), _self))
            if kwds:
diff --git a/Lib/collections.py b/Lib/collections.py
index faf677b..af32e44 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -259,8 +259,6 @@
         'Return a new OrderedDict which maps field names to their values'
         return OrderedDict(zip(self._fields, self))
 
-    __dict__ = property(_asdict)
-
     def _replace(_self, **kwds):
         'Return a new {typename} object replacing specified fields with new values'
         result = _self._make(map(kwds.pop, {field_names!r}, _self))
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index 313f81f..8bdeb3d 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -78,12 +78,12 @@
         self.assertRaises(TypeError, eval, 'Point(XXX=1, y=2)', locals())   # wrong keyword argument
         self.assertRaises(TypeError, eval, 'Point(x=1)', locals())          # missing keyword argument
         self.assertEqual(repr(p), 'Point(x=11, y=22)')
+        self.assertNotIn('__dict__', dir(p))                              # verify instance has no dict
         self.assertNotIn('__weakref__', dir(p))
         self.assertEqual(p, Point._make([11, 22]))                          # test _make classmethod
         self.assertEqual(p._fields, ('x', 'y'))                             # test _fields attribute
         self.assertEqual(p._replace(x=1), (1, 22))                          # test _replace method
         self.assertEqual(p._asdict(), dict(x=11, y=22))                     # test _asdict method
-        self.assertEqual(vars(p), p._asdict())                              # verify that vars() works
 
         try:
             p._replace(x=1, error=2)
diff --git a/Misc/NEWS b/Misc/NEWS
index b61bf23..625d300 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -17,6 +17,9 @@
 Core and Builtins
 -----------------
 
+- Issue #15535: Fixed regression in the pickling of named tuples by 
+  removing the __dict__ property introduced in 2.7.4.
+
 - Issue #17857: Prevent build failures with pre-3.5.0 versions of sqlite3,
   such as was shipped with Centos 5 and Mac OS X 10.4.
 
