From 5a9fed75bd1c9da401004fd84c72437c1404a122 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Thu, 8 May 2008 07:23:30 +0000 Subject: Fix-up the enumerate type example and move it to the end. --- Doc/library/collections.rst | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst index dbc47cb..54c08b8 100644 --- a/Doc/library/collections.rst +++ b/Doc/library/collections.rst @@ -570,16 +570,6 @@ 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. @@ -674,6 +664,15 @@ customize a prototype instance: >>> default_account = Account('', 0.0, 0) >>> johns_account = default_account._replace(owner='John') +Enumerated constants can be implemented with named tuples, but it is simpler +and more efficient to use a simple class declaration: + + >>> Status = namedtuple('Status', 'open pending closed')._make(range(3)) + >>> Status.open, Status.pending, Status.closed + (0, 1, 2) + >>> class Status: + ... open, pending, closed = range(3) + .. rubric:: Footnotes .. [#] For information on the double-star-operator see -- cgit v0.12