#2502: add example how to do enum types with named tuples.

This commit is contained in:
Georg Brandl 2008-03-28 12:58:26 +00:00
parent 489343e948
commit d289ea6df9
1 changed files with 10 additions and 0 deletions

View File

@ -567,6 +567,16 @@ by the :mod:`csv` or :mod:`sqlite3` modules::
for emp in map(EmployeeRecord._make, cursor.fetchall()): for emp in map(EmployeeRecord._make, cursor.fetchall()):
print emp.name, emp.title 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 In addition to the methods inherited from tuples, named tuples support
three additional methods and one attribute. To prevent conflicts with three additional methods and one attribute. To prevent conflicts with
field names, the method and attribute names start with an underscore. field names, the method and attribute names start with an underscore.