diff --git a/Lib/collections/__init__.py b/Lib/collections/__init__.py
index 943cbca..638a4ca 100644
--- a/Lib/collections/__init__.py
+++ b/Lib/collections/__init__.py
@@ -939,7 +939,22 @@
 class UserDict(MutableMapping):
 
     # Start by filling-out the abstract methods
-    def __init__(self, dict=None, **kwargs):
+    def __init__(*args, **kwargs):
+        if not args:
+            raise TypeError("descriptor '__init__' of 'UserDict' object "
+                            "needs an argument")
+        self, *args = args
+        if len(args) > 1:
+            raise TypeError('expected at most 1 arguments, got %d' % len(args))
+        if args:
+            dict = args[0]
+        elif 'dict' in kwargs:
+            dict = kwargs.pop('dict')
+            import warnings
+            warnings.warn("Passing 'dict' as keyword argument is deprecated",
+                          DeprecationWarning, stacklevel=2)
+        else:
+            dict = None
         self.data = {}
         if dict is not None:
             self.update(dict)
diff --git a/Lib/test/test_userdict.py b/Lib/test/test_userdict.py
index c83cc55..6f71d2d 100644
--- a/Lib/test/test_userdict.py
+++ b/Lib/test/test_userdict.py
@@ -29,7 +29,8 @@
         self.assertEqual(collections.UserDict(one=1, two=2), d2)
         # item sequence constructor
         self.assertEqual(collections.UserDict([('one',1), ('two',2)]), d2)
-        self.assertEqual(collections.UserDict(dict=[('one',1), ('two',2)]), d2)
+        with self.assertWarnsRegex(DeprecationWarning, "'dict'"):
+            self.assertEqual(collections.UserDict(dict=[('one',1), ('two',2)]), d2)
         # both together
         self.assertEqual(collections.UserDict([('one',1), ('two',2)], two=3, three=5), d3)
 
@@ -139,6 +140,30 @@
         self.assertEqual(t.popitem(), ("x", 42))
         self.assertRaises(KeyError, t.popitem)
 
+    def test_init(self):
+        for kw in 'self', 'other', 'iterable':
+            self.assertEqual(list(collections.UserDict(**{kw: 42}).items()),
+                             [(kw, 42)])
+        self.assertEqual(list(collections.UserDict({}, dict=42).items()),
+                         [('dict', 42)])
+        self.assertEqual(list(collections.UserDict({}, dict=None).items()),
+                         [('dict', None)])
+        with self.assertWarnsRegex(DeprecationWarning, "'dict'"):
+            self.assertEqual(list(collections.UserDict(dict={'a': 42}).items()),
+                             [('a', 42)])
+        self.assertRaises(TypeError, collections.UserDict, 42)
+        self.assertRaises(TypeError, collections.UserDict, (), ())
+        self.assertRaises(TypeError, collections.UserDict.__init__)
+
+    def test_update(self):
+        for kw in 'self', 'dict', 'other', 'iterable':
+            d = collections.UserDict()
+            d.update(**{kw: 42})
+            self.assertEqual(list(d.items()), [(kw, 42)])
+        self.assertRaises(TypeError, collections.UserDict().update, 42)
+        self.assertRaises(TypeError, collections.UserDict().update, {}, {})
+        self.assertRaises(TypeError, collections.UserDict.update)
+
     def test_missing(self):
         # Make sure UserDict doesn't have a __missing__ method
         self.assertEqual(hasattr(collections.UserDict, "__missing__"), False)
diff --git a/Misc/NEWS b/Misc/NEWS
index 5aa7ed6..ccae596 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -190,6 +190,9 @@
 Library
 -------
 
+- Issue #22609: Constructor of collections.UserDict now accepts the self keyword
+  argument.
+
 - Issue #25111: Fixed comparison of traceback.FrameSummary.
 
 - Issue #25262. Added support for BINBYTES8 opcode in Python implementation of
