Make it easier to extend OrderedDict without breaking it.
diff --git a/Lib/collections.py b/Lib/collections.py
index c69f4ca..d0a44c2 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -52,7 +52,7 @@
             self.__root = root = _proxy(self.__hardroot)
             root.prev = root.next = root
             self.__map = {}
-        self.update(*args, **kwds)
+        self.__update(*args, **kwds)
 
     def __setitem__(self, key, value,
                     dict_setitem=dict.__setitem__, proxy=_proxy, Link=_Link):
@@ -171,7 +171,7 @@
         size += sizeof(self.__root) * n         # proxy objects
         return size
 
-    update = MutableMapping.update
+    update = __update = MutableMapping.update
     pop = MutableMapping.pop
     keys = MutableMapping.keys
     values = MutableMapping.values
diff --git a/Lib/test/test_collections.py b/Lib/test/test_collections.py
index 32ce35b..8c95979 100644
--- a/Lib/test/test_collections.py
+++ b/Lib/test/test_collections.py
@@ -1012,6 +1012,14 @@
         od = OrderedDict(**d)
         self.assertGreater(sys.getsizeof(od), sys.getsizeof(d))
 
+    def test_override_update(self):
+        # Verify that subclasses can override update() without breaking __init__()
+        class MyOD(OrderedDict):
+            def update(self, *args, **kwds):
+                raise Exception()
+        items = [('a', 1), ('c', 3), ('b', 2)]
+        self.assertEqual(list(MyOD(items).items()), items)
+
 class GeneralMappingTests(mapping_tests.BasicTestMappingProtocol):
     type2test = OrderedDict