summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2006-03-21 18:17:25 (GMT)
committerGeorg Brandl <georg@python.org>2006-03-21 18:17:25 (GMT)
commitbb03ac0dae9830968ae971ab53143e2d539d7a3a (patch)
treecb6f196ec6c3933a1b064e500cbf81355566c5c7
parent9ca8789ee39880199990ed964b6af0369c4294c1 (diff)
downloadcpython-bb03ac0dae9830968ae971ab53143e2d539d7a3a.zip
cpython-bb03ac0dae9830968ae971ab53143e2d539d7a3a.tar.gz
cpython-bb03ac0dae9830968ae971ab53143e2d539d7a3a.tar.bz2
Correct API design mistake from rev. 43126: make socket attributes readonly properties.
-rw-r--r--Doc/lib/libsocket.tex34
-rw-r--r--Lib/socket.py22
-rw-r--r--Lib/test/test_socket.py10
3 files changed, 28 insertions, 38 deletions
diff --git a/Doc/lib/libsocket.tex b/Doc/lib/libsocket.tex
index fd43b1d..04d467a 100644
--- a/Doc/lib/libsocket.tex
+++ b/Doc/lib/libsocket.tex
@@ -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.
diff --git a/Lib/socket.py b/Lib/socket.py
index 3dc59c4..7e49192 100644
--- a/Lib/socket.py
+++ b/Lib/socket.py
@@ -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")
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
index 5a851fc..592e897 100644
--- a/Lib/test/test_socket.py
+++ b/Lib/test/test_socket.py
@@ -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):