From 72c82a4d624bd82e232ae2bdb47821362f73c0ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Sun, 30 Mar 2008 20:18:05 +0000 Subject: Merged revisions 62007 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ........ r62007 | georg.brandl | 2008-03-28 13:58:26 +0100 (Fr, 28 Mär 2008) | 2 lines #2502: add example how to do enum types with named tuples. ........ --- Doc/library/collections.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index 7966a2e..7827700 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -547,6 +547,16 @@ by the :mod:`csv` or :mod:`sqlite3` modules:: for emp in map(EmployeeRecord._make, cursor.fetchall()): print(emp.name, emp.title) +Named tuples can also be used to generate enumerated constants: + +.. testcode:: + + def enum(*names): + return namedtuple('Enum', ' '.join(names))(*range(len(names))) + + Status = enum('open', 'pending', 'closed') + assert (0, 1, 2) == (Status.open, Status.pending, Status.closed) + In addition to the methods inherited from tuples, named tuples support three additional methods and one attribute. To prevent conflicts with field names, the method and attribute names start with an underscore. -- cgit v0.12