From d289ea6df96e9e24e17914070fd5c2594e44413e Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Fri, 28 Mar 2008 12:58:26 +0000 Subject: [PATCH] #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 f07ac2535b..361da71430 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -567,6 +567,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. -- 2.40.0