]> granicus.if.org Git - python/commitdiff
Merged revisions 62007 via svnmerge from
authorMartin v. Löwis <martin@v.loewis.de>
Sun, 30 Mar 2008 20:18:05 +0000 (20:18 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Sun, 30 Mar 2008 20:18:05 +0000 (20:18 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

........
  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

index 7966a2ea9a05f70651072c615a0e15495071b810..782770091de8ea74374c85108b17929a63987139 100644 (file)
@@ -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.