Adopt more descriptive attribute names as suggested on python-dev.
diff --git a/Doc/library/functools.rst b/Doc/library/functools.rst
index 00ab624..a6e2382 100644
--- a/Doc/library/functools.rst
+++ b/Doc/library/functools.rst
@@ -47,12 +47,12 @@
    results, the positional and keyword arguments to the function must be
    hashable.
 
-   The wrapped function is instrumented with two attributes, :attr:`hits`
-   and :attr:`misses` which count the number of successful or unsuccessful
+   The wrapped function is instrumented with two attributes, :attr:`cache_hits`
+   and :attr:`cache_misses` which count the number of successful or unsuccessful
    cache lookups.  These statistics are helpful for tuning the *maxsize*
    parameter and for measuring the cache's effectiveness.
 
-   The wrapped function also has a :attr:`clear` attribute which can be
+   The wrapped function also has a :attr:`cache_clear` attribute which can be
    called (with no arguments) to clear the cache.
 
    The original underlying function is accessible through the
diff --git a/Doc/whatsnew/3.2.rst b/Doc/whatsnew/3.2.rst
index e3cf864..9181b4f 100644
--- a/Doc/whatsnew/3.2.rst
+++ b/Doc/whatsnew/3.2.rst
@@ -85,17 +85,17 @@
           return c.fetchone()[0]
 
   To help with choosing an effective cache size, the wrapped function is
-  instrumented with two attributes *hits* and *misses*::
+  instrumented with two attributes *cache_hits* and *cache_misses*::
 
         >>> for name in user_requests:
         ...     get_phone_number(name)
-        >>> print(get_phone_number.hits, get_phone_number.misses)
+        >>> print(get_phone_number.cache_hits, get_phone_number.cache_misses)
         4805 980
 
   If the phonelist table gets updated, the outdated contents of the cache can be
   cleared with::
 
-        >>> get_phone_number.clear()
+        >>> get_phone_number.cache_clear()
 
   (Contributed by Raymond Hettinger)
 
diff --git a/Lib/functools.py b/Lib/functools.py
index 658081f..1effc08 100644
--- a/Lib/functools.py
+++ b/Lib/functools.py
@@ -142,23 +142,23 @@
                 with lock:
                     result = cache[key]
                     cache_renew(key)            # record recent use of this key
-                    wrapper.hits += 1
+                    wrapper.cache_hits += 1
             except KeyError:
                 result = user_function(*args, **kwds)
                 with lock:
                     cache[key] = result         # record recent use of this key
-                    wrapper.misses += 1
+                    wrapper.cache_misses += 1
                     if len(cache) > maxsize:
                         cache_popitem(0)        # purge least recently used cache entry
             return result
 
-        def clear():
+        def cache_clear():
             """Clear the cache and cache statistics"""
             with lock:
                 cache.clear()
-                wrapper.hits = wrapper.misses = 0
+                wrapper.cache_hits = wrapper.cache_misses = 0
 
-        wrapper.hits = wrapper.misses = 0
-        wrapper.clear = clear
+        wrapper.cache_hits = wrapper.cache_misses = 0
+        wrapper.cache_clear = cache_clear
         return wrapper
     return decorating_function
diff --git a/Lib/re.py b/Lib/re.py
index 1dcf4a7..92e4e4c 100644
--- a/Lib/re.py
+++ b/Lib/re.py
@@ -207,8 +207,8 @@
 
 def purge():
     "Clear the regular expression caches"
-    _compile_typed.clear()
-    _compile_repl.clear()
+    _compile_typed.cache_clear()
+    _compile_repl.cache_clear()
 
 def template(pattern, flags=0):
     "Compile a template pattern, returning a pattern object"
diff --git a/Lib/test/test_functools.py b/Lib/test/test_functools.py
index 41a98a2..82ad889 100644
--- a/Lib/test/test_functools.py
+++ b/Lib/test/test_functools.py
@@ -508,21 +508,21 @@
             actual = f(x, y)
             expected = orig(x, y)
             self.assertEquals(actual, expected)
-        self.assert_(f.hits > f.misses)
-        self.assertEquals(f.hits + f.misses, 1000)
+        self.assert_(f.cache_hits > f.cache_misses)
+        self.assertEquals(f.cache_hits + f.cache_misses, 1000)
 
-        f.clear()   # test clearing
-        self.assertEqual(f.hits, 0)
-        self.assertEqual(f.misses, 0)
+        f.cache_clear()   # test clearing
+        self.assertEqual(f.cache_hits, 0)
+        self.assertEqual(f.cache_misses, 0)
         f(x, y)
-        self.assertEqual(f.hits, 0)
-        self.assertEqual(f.misses, 1)
+        self.assertEqual(f.cache_hits, 0)
+        self.assertEqual(f.cache_misses, 1)
 
         # Test bypassing the cache
         self.assertIs(f.__wrapped__, orig)
         f.__wrapped__(x, y)
-        self.assertEqual(f.hits, 0)
-        self.assertEqual(f.misses, 1)
+        self.assertEqual(f.cache_hits, 0)
+        self.assertEqual(f.cache_misses, 1)
 
         # test size zero (which means "never-cache")
         @functools.lru_cache(0)