diff --git a/Doc/lib/libsets.tex b/Doc/lib/libsets.tex
index 9c5998a..4d87a4f 100644
--- a/Doc/lib/libsets.tex
+++ b/Doc/lib/libsets.tex
@@ -203,23 +203,23 @@
 
 The mechanism is to always add a hashable element, or if it is not
 hashable, the element is checked to see if it has an
-\method{_as_immutable()} method which returns an immutable equivalent.
+\method{__as_immutable__()} method which returns an immutable equivalent.
 
-Since \class{Set} objects have a \method{_as_immutable()} method
+Since \class{Set} objects have a \method{__as_immutable__()} method
 returning an instance of \class{ImmutableSet}, it is possible to
 construct sets of sets.
 
 A similar mechanism is needed by the \method{__contains__()} and
 \method{remove()} methods which need to hash an element to check
 for membership in a set.  Those methods check an element for hashability
-and, if not, check for a \method{_as_temporarily_immutable()} method
+and, if not, check for a \method{__as_temporarily_immutable__()} method
 which returns the element wrapped by a class that provides temporary
 methods for \method{__hash__()}, \method{__eq__()}, and \method{__ne__()}.
 
 The alternate mechanism spares the need to build a separate copy of
 the original mutable object.
 
-\class{Set} objects implement the \method{_as_temporarily_immutable()}
+\class{Set} objects implement the \method{__as_temporarily_immutable__()}
 method which returns the \class{Set} object wrapped by a new class
 \class{_TemporarilyImmutableSet}.
 
diff --git a/Lib/sets.py b/Lib/sets.py
index 9604249..0824fb1 100644
--- a/Lib/sets.py
+++ b/Lib/sets.py
@@ -248,7 +248,7 @@
         try:
             return element in self._data
         except TypeError:
-            transform = getattr(element, "_as_temporarily_immutable", None)
+            transform = getattr(element, "__as_temporarily_immutable__", None)
             if transform is None:
                 raise # re-raise the TypeError exception we caught
             return transform() in self._data
@@ -325,7 +325,7 @@
                         data[element] = value
                     return
                 except TypeError:
-                    transform = getattr(element, "_as_immutable", None)
+                    transform = getattr(element, "__as_immutable__", None)
                     if transform is None:
                         raise # re-raise the TypeError exception we caught
                     data[transform()] = value
@@ -335,7 +335,7 @@
                 try:
                     data[element] = value
                 except TypeError:
-                    transform = getattr(element, "_as_immutable", None)
+                    transform = getattr(element, "__as_immutable__", None)
                     if transform is None:
                         raise # re-raise the TypeError exception we caught
                     data[transform()] = value
@@ -464,7 +464,7 @@
         try:
             self._data[element] = True
         except TypeError:
-            transform = getattr(element, "_as_immutable", None)
+            transform = getattr(element, "__as_immutable__", None)
             if transform is None:
                 raise # re-raise the TypeError exception we caught
             self._data[transform()] = True
@@ -477,7 +477,7 @@
         try:
             del self._data[element]
         except TypeError:
-            transform = getattr(element, "_as_temporarily_immutable", None)
+            transform = getattr(element, "__as_temporarily_immutable__", None)
             if transform is None:
                 raise # re-raise the TypeError exception we caught
             del self._data[transform()]
@@ -496,11 +496,11 @@
         """Remove and return an arbitrary set element."""
         return self._data.popitem()[0]
 
-    def _as_immutable(self):
+    def __as_immutable__(self):
         # Return a copy of self as an immutable set
         return ImmutableSet(self)
 
-    def _as_temporarily_immutable(self):
+    def __as_temporarily_immutable__(self):
         # Return self wrapped in a temporarily immutable set
         return _TemporarilyImmutableSet(self)
 
