]> granicus.if.org Git - python/commitdiff
Correct API design mistake from rev. 43126: make socket attributes readonly properties.
authorGeorg Brandl <georg@python.org>
Tue, 21 Mar 2006 18:17:25 +0000 (18:17 +0000)
committerGeorg Brandl <georg@python.org>
Tue, 21 Mar 2006 18:17:25 +0000 (18:17 +0000)
Doc/lib/libsocket.tex
Lib/socket.py
Lib/test/test_socket.py

index fd43b1d6085cb4adc1bc6272cdafe6af5585609f..04d467aa0cb5ff660417a45355a59fde82f4845f 100644 (file)
@@ -654,21 +654,6 @@ Note that the \method{connect()} operation is subject to the timeout
 setting, and in general it is recommended to call
 \method{settimeout()} before calling \method{connect()}.
 
-\begin{methoddesc}[socket]{getfamily}{}
-Return the socket family, as given to the \class{socket} constructor.
-\versionadded{2.5}
-\end{methoddesc}
-
-\begin{methoddesc}[socket]{gettype}{}
-Return the socket type, as given to the \class{socket} constructor.
-\versionadded{2.5}
-\end{methoddesc}
-
-\begin{methoddesc}[socket]{getproto}{}
-Return the socket protocol, as given to the \class{socket} constructor.
-\versionadded{2.5}
-\end{methoddesc}
-
 \begin{methoddesc}[socket]{setsockopt}{level, optname, value}
 Set the value of the given socket option (see the \UNIX{} manual page
 \manpage{setsockopt}{2}).  The needed symbolic constants are defined in
@@ -692,6 +677,25 @@ use \method{recv()} and \method{send()} without \var{flags} argument
 instead.
 
 
+Socket objects also have these (read-only) attributes that correspond
+to the values given to the \class{socket} constructor.
+
+\begin{memberdesc}[socket]{family}
+The socket family.
+\versionadded{2.5}
+\end{memberdesc}
+
+\begin{memberdesc}[socket]{type}
+The socket type.
+\versionadded{2.5}
+\end{memberdesc}
+
+\begin{memberdesc}[socket]{proto}
+The socket protocol.
+\versionadded{2.5}
+\end{memberdesc}
+
+
 \subsection{SSL Objects \label{ssl-objects}}
 
 SSL objects have the following methods.
index 3dc59c4f6f28d28641eec17a9a3d1a90b8ff6b06..7e49192b4186bf08ae15e060a896d10a51922b7a 100644 (file)
@@ -182,24 +182,10 @@ class _socketobject(object):
         Return a regular file object corresponding to the socket.  The mode
         and bufsize arguments are as for the built-in open() function."""
         return _fileobject(self._sock, mode, bufsize)
-
-    def getfamily(self):
-        """getfamily() -> socket family
-
-        Return the socket family."""
-        return self._sock.family
-
-    def gettype(self):
-        """gettype() -> socket type
-
-        Return the socket type."""
-        return self._sock.type
-
-    def getproto(self):
-        """getproto() -> socket protocol
-
-        Return the socket protocol."""
-        return self._sock.proto
+    
+    family = property(lambda self: self._sock.family, doc="the socket family")
+    type = property(lambda self: self._sock.type, doc="the socket type")
+    proto = property(lambda self: self._sock.proto, doc="the socket protocol")
 
     _s = ("def %s(self, *args): return self._sock.%s(*args)\n\n"
           "%s.__doc__ = _realsocket.%s.__doc__\n")
index 5a851fc15101c64ecd82a0cc92dd78fa7b9cb30f..592e897532bcb775f27afd5751004d3a29f431e5 100644 (file)
@@ -469,12 +469,12 @@ class GeneralModuleTests(unittest.TestCase):
         sock.close()
         self.assertRaises(socket.error, sock.send, "spam")
 
-    def testNewGetMethods(self):
-        # testing getfamily(), gettype() and getprotocol()
+    def testNewAttributes(self):
+        # testing .family, .type and .protocol
         sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-        self.assertEqual(sock.getfamily(), socket.AF_INET)
-        self.assertEqual(sock.gettype(), socket.SOCK_STREAM)
-        self.assertEqual(sock.getproto(), 0)
+        self.assertEqual(sock.family, socket.AF_INET)
+        self.assertEqual(sock.type, socket.SOCK_STREAM)
+        self.assertEqual(sock.proto, 0)
         sock.close()
 
 class BasicTCPTest(SocketConnectedTest):