diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst
index eaa823a..0205cf1 100644
--- a/Doc/library/collections.rst
+++ b/Doc/library/collections.rst
@@ -410,7 +410,7 @@
 
            def _replace(self, **kwds):
                'Return a new Point object replacing specified fields with new values'
-               result = self.__class__._make(map(kwds.pop, ('x', 'y'), self))
+               result = self._make(map(kwds.pop, ('x', 'y'), self))
                if kwds:
                    raise ValueError('Got unexpected field names: %r' % kwds.keys())
                return result
diff --git a/Lib/collections.py b/Lib/collections.py
index 9985f93..39b9229 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -78,7 +78,7 @@
             return {%(dicttxt)s} \n
         def _replace(self, **kwds):
             'Return a new %(typename)s object replacing specified fields with new values'
-            result = self.__class__._make(map(kwds.pop, %(field_names)r, self))
+            result = self._make(map(kwds.pop, %(field_names)r, self))
             if kwds:
                 raise ValueError('Got unexpected field names: %%r' %% kwds.keys())
             return result \n\n''' % locals()
