This way, when a socket object is deleted after the socket module has
already been zapped by module shutdown, we don't get annoying warnings
about exceptions in __del__ methods.
class _socketobject:
+ class _closedsocket:
+ def __getattr__(self, name):
+ raise error(9, 'Bad file descriptor')
+
def __init__(self, sock):
self._sock = sock
def close(self):
- self._sock = _closedsocket()
+ # Avoid referencing globals here
+ self._sock = self.__class__._closedsocket()
def __del__(self):
self.close()
exec _s % (_m, _m)
-class _closedsocket:
-
- def __getattr__(self, name):
- raise error(9, 'Bad file descriptor')
-
-
class _fileobject:
def __init__(self, sock, mode, bufsize):