diff --git a/django/forms/widgets.py b/django/forms/widgets.py
index 4f028d34ad..801067ee38 100644
--- a/django/forms/widgets.py
+++ b/django/forms/widgets.py
@@ -268,6 +268,7 @@ class Input(Widget):
def __init__(self, attrs=None):
if attrs is not None:
+ attrs = attrs.copy()
self.input_type = attrs.pop('type', self.input_type)
super(Input, self).__init__(attrs)
diff --git a/tests/forms_tests/widget_tests/test_input.py b/tests/forms_tests/widget_tests/test_input.py
new file mode 100644
index 0000000000..e773d94d8a
--- /dev/null
+++ b/tests/forms_tests/widget_tests/test_input.py
@@ -0,0 +1,15 @@
+from django.forms.widgets import Input
+
+from .base import WidgetTest
+
+
+class InputTests(WidgetTest):
+
+ def test_attrs_with_type(self):
+ attrs = {'type': 'date'}
+ widget = Input(attrs)
+ self.check_html(widget, 'name', 'value', '')
+ # reuse the same attrs for another widget
+ self.check_html(Input(attrs), 'name', 'value', '')
+ attrs['type'] = 'number' # shouldn't change the widget type
+ self.check_html(widget, 'name', 'value', '')