Issue #4608: urllib.request.urlopen does not return an iterable object
diff --git a/Lib/urllib/response.py b/Lib/urllib/response.py
index 9859642..8c6dcca 100644
--- a/Lib/urllib/response.py
+++ b/Lib/urllib/response.py
@@ -23,10 +23,14 @@
             self.fileno = self.fp.fileno
         else:
             self.fileno = lambda: None
-        if hasattr(self.fp, "__iter__"):
-            self.__iter__ = self.fp.__iter__
-            if hasattr(self.fp, "__next__"):
-                self.__next__ = self.fp.__next__
+
+    def __iter__(self):
+        # Assigning `__iter__` to the instance doesn't work as intended
+        # because the iter builtin does something like `cls.__iter__(obj)`
+        # and thus fails to find the _bound_ method `obj.__iter__`.
+        # Returning just `self.fp` works for built-in file objects but
+        # might not work for general file-like objects.
+        return iter(self.fp)
 
     def __repr__(self):
         return '<%s at %r whose fp = %r>' % (self.__class__.__name__,